net/sfc/base: extend NVRAM RW finish to return verify result

Extend efx_nvram_rw_finish() to return firmware verify result code.

Signed-off-by: Andy Moreton <amoreton@solarflare.com>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
This commit is contained in:
Andy Moreton 2017-11-16 08:03:54 +00:00 committed by Ferruh Yigit
parent 26b17d5ff7
commit 79e2a9d018
3 changed files with 16 additions and 7 deletions

View File

@ -1411,7 +1411,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(

View File

@ -345,11 +345,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 */
@ -521,7 +521,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);
@ -537,7 +537,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);

View File

@ -362,11 +362,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);
@ -385,6 +386,9 @@ efx_nvram_rw_finish(
enp->en_nvram_locked = EFX_NVRAM_INVALID;
if (verify_resultp != NULL)
*verify_resultp = verify_result;
return (0);
fail2:
@ -394,6 +398,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);
}