sfxge: add additional WRITESIZE value for NVRAM_INFO command

Submitted by:   Paul Fox <pfox at solarflare.com>
Sponsored by:   Solarflare Communications, Inc.
MFC after:      2 days
Differential Revision: https://reviews.freebsd.org/D4353
This commit is contained in:
Andrew Rybchenko 2015-12-04 06:51:37 +00:00
parent becf96a52d
commit 9cb71b166c
5 changed files with 18 additions and 7 deletions

View file

@ -536,7 +536,8 @@ efx_mcdi_nvram_info(
__in uint32_t partn,
__out_opt size_t *sizep,
__out_opt uint32_t *addressp,
__out_opt uint32_t *erase_sizep);
__out_opt uint32_t *erase_sizep,
__out_opt uint32_t *write_sizep);
__checkReturn efx_rc_t
efx_mcdi_nvram_update_start(

View file

@ -567,10 +567,11 @@ efx_mcdi_nvram_info(
__in uint32_t partn,
__out_opt size_t *sizep,
__out_opt uint32_t *addressp,
__out_opt uint32_t *erase_sizep)
__out_opt uint32_t *erase_sizep,
__out_opt uint32_t *write_sizep)
{
uint8_t payload[MAX(MC_CMD_NVRAM_INFO_IN_LEN,
MC_CMD_NVRAM_INFO_OUT_LEN)];
MC_CMD_NVRAM_INFO_V2_OUT_LEN)];
efx_mcdi_req_t req;
efx_rc_t rc;
@ -579,7 +580,7 @@ efx_mcdi_nvram_info(
req.emr_in_buf = payload;
req.emr_in_length = MC_CMD_NVRAM_INFO_IN_LEN;
req.emr_out_buf = payload;
req.emr_out_length = MC_CMD_NVRAM_INFO_OUT_LEN;
req.emr_out_length = MC_CMD_NVRAM_INFO_V2_OUT_LEN;
MCDI_IN_SET_DWORD(req, NVRAM_INFO_IN_TYPE, partn);
@ -604,6 +605,13 @@ efx_mcdi_nvram_info(
if (erase_sizep)
*erase_sizep = MCDI_OUT_DWORD(req, NVRAM_INFO_OUT_ERASESIZE);
if (write_sizep) {
*write_sizep =
(req.emr_out_length_used <
MC_CMD_NVRAM_INFO_V2_OUT_LEN) ?
0 : MCDI_OUT_DWORD(req, NVRAM_INFO_V2_OUT_WRITESIZE);
}
return (0);
fail2:

View file

@ -1295,7 +1295,8 @@ hunt_nvram_partn_size(
{
efx_rc_t rc;
if ((rc = efx_mcdi_nvram_info(enp, partn, sizep, NULL, NULL)) != 0)
if ((rc = efx_mcdi_nvram_info(enp, partn, sizep,
NULL, NULL, NULL)) != 0)
goto fail1;
return (0);

View file

@ -113,7 +113,7 @@ hunt_vpd_size(
* which is the size of the DYNAMIC_CONFIG partition.
*/
if ((rc = efx_mcdi_nvram_info(enp, NVRAM_PARTITION_TYPE_DYNAMIC_CONFIG,
sizep, NULL, NULL)) != 0)
sizep, NULL, NULL, NULL)) != 0)
goto fail1;
return (0);

View file

@ -54,7 +54,8 @@ siena_nvram_partn_size(
goto fail1;
}
if ((rc = efx_mcdi_nvram_info(enp, partn, sizep, NULL, NULL)) != 0) {
if ((rc = efx_mcdi_nvram_info(enp, partn, sizep,
NULL, NULL, NULL)) != 0) {
goto fail2;
}