sfxge(4): extend NVRAM RW finish to return verify result
Extend efx_nvram_rw_finish() to return firmware verify result code. Submitted by: Andy Moreton <amoreton at solarflare.com> Sponsored by: Solarflare Communications, Inc. Differential Revision: https://reviews.freebsd.org/D18087
This commit is contained in:
parent
e9c1f679ee
commit
8b9303b12b
@ -1418,7 +1418,8 @@ efx_nvram_rw_start(
|
||||
extern __checkReturn efx_rc_t
|
||||
efx_nvram_rw_finish(
|
||||
__in efx_nic_t *enp,
|
||||
__in efx_nvram_type_t type);
|
||||
__in efx_nvram_type_t type,
|
||||
__out_opt uint32_t *verify_resultp);
|
||||
|
||||
extern __checkReturn efx_rc_t
|
||||
efx_nvram_get_version(
|
||||
|
@ -350,11 +350,11 @@ efx_bootcfg_read(
|
||||
|
||||
if ((rc = efx_nvram_read_chunk(enp, EFX_NVRAM_BOOTROM_CFG,
|
||||
sector_offset, (caddr_t)payload, sector_length)) != 0) {
|
||||
(void) efx_nvram_rw_finish(enp, EFX_NVRAM_BOOTROM_CFG);
|
||||
(void) efx_nvram_rw_finish(enp, EFX_NVRAM_BOOTROM_CFG, NULL);
|
||||
goto fail6;
|
||||
}
|
||||
|
||||
if ((rc = efx_nvram_rw_finish(enp, EFX_NVRAM_BOOTROM_CFG)) != 0)
|
||||
if ((rc = efx_nvram_rw_finish(enp, EFX_NVRAM_BOOTROM_CFG, NULL)) != 0)
|
||||
goto fail7;
|
||||
|
||||
/* Verify that the area is correctly formatted and checksummed */
|
||||
@ -526,7 +526,7 @@ efx_bootcfg_write(
|
||||
0, (caddr_t)partn_data, partn_length)) != 0)
|
||||
goto fail11;
|
||||
|
||||
if ((rc = efx_nvram_rw_finish(enp, EFX_NVRAM_BOOTROM_CFG)) != 0)
|
||||
if ((rc = efx_nvram_rw_finish(enp, EFX_NVRAM_BOOTROM_CFG, NULL)) != 0)
|
||||
goto fail12;
|
||||
|
||||
EFSYS_KMEM_FREE(enp->en_esip, partn_length, partn_data);
|
||||
@ -542,7 +542,7 @@ efx_bootcfg_write(
|
||||
fail9:
|
||||
EFSYS_PROBE(fail9);
|
||||
|
||||
(void) efx_nvram_rw_finish(enp, EFX_NVRAM_BOOTROM_CFG);
|
||||
(void) efx_nvram_rw_finish(enp, EFX_NVRAM_BOOTROM_CFG, NULL);
|
||||
fail8:
|
||||
EFSYS_PROBE(fail8);
|
||||
|
||||
|
@ -367,11 +367,12 @@ efx_nvram_write_chunk(
|
||||
__checkReturn efx_rc_t
|
||||
efx_nvram_rw_finish(
|
||||
__in efx_nic_t *enp,
|
||||
__in efx_nvram_type_t type)
|
||||
__in efx_nvram_type_t type,
|
||||
__out_opt uint32_t *verify_resultp)
|
||||
{
|
||||
const efx_nvram_ops_t *envop = enp->en_envop;
|
||||
uint32_t partn;
|
||||
uint32_t verify_result;
|
||||
uint32_t verify_result = 0;
|
||||
efx_rc_t rc;
|
||||
|
||||
EFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);
|
||||
@ -390,6 +391,9 @@ efx_nvram_rw_finish(
|
||||
|
||||
enp->en_nvram_locked = EFX_NVRAM_INVALID;
|
||||
|
||||
if (verify_resultp != NULL)
|
||||
*verify_resultp = verify_result;
|
||||
|
||||
return (0);
|
||||
|
||||
fail2:
|
||||
@ -399,6 +403,10 @@ efx_nvram_rw_finish(
|
||||
fail1:
|
||||
EFSYS_PROBE1(fail1, efx_rc_t, rc);
|
||||
|
||||
/* Always report verification result */
|
||||
if (verify_resultp != NULL)
|
||||
*verify_resultp = verify_result;
|
||||
|
||||
return (rc);
|
||||
}
|
||||
|
||||
|
@ -104,7 +104,7 @@ sfxge_nvram_rw(struct sfxge_softc *sc, sfxge_ioc_t *ip, efx_nvram_type_t type,
|
||||
|
||||
fail3:
|
||||
free(buf, M_TEMP);
|
||||
efx_nvram_rw_finish(enp, type);
|
||||
efx_nvram_rw_finish(enp, type, NULL);
|
||||
fail1:
|
||||
return (rc);
|
||||
}
|
||||
@ -125,7 +125,7 @@ sfxge_nvram_erase(struct sfxge_softc *sc, efx_nvram_type_t type)
|
||||
|
||||
rc = efx_nvram_erase(enp, type);
|
||||
|
||||
efx_nvram_rw_finish(enp, type);
|
||||
efx_nvram_rw_finish(enp, type, NULL);
|
||||
return (rc);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user