Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Nov 2018 10:20:33 +0000 (UTC)
From:      Andrew Rybchenko <arybchik@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r340817 - in head/sys/dev/sfxge: . common
Message-ID:  <201811231020.wANAKXHd031598@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: arybchik
Date: Fri Nov 23 10:20:32 2018
New Revision: 340817
URL: https://svnweb.freebsd.org/changeset/base/340817

Log:
  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

Modified:
  head/sys/dev/sfxge/common/efx.h
  head/sys/dev/sfxge/common/efx_bootcfg.c
  head/sys/dev/sfxge/common/efx_nvram.c
  head/sys/dev/sfxge/sfxge_nvram.c

Modified: head/sys/dev/sfxge/common/efx.h
==============================================================================
--- head/sys/dev/sfxge/common/efx.h	Fri Nov 23 10:20:20 2018	(r340816)
+++ head/sys/dev/sfxge/common/efx.h	Fri Nov 23 10:20:32 2018	(r340817)
@@ -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(

Modified: head/sys/dev/sfxge/common/efx_bootcfg.c
==============================================================================
--- head/sys/dev/sfxge/common/efx_bootcfg.c	Fri Nov 23 10:20:20 2018	(r340816)
+++ head/sys/dev/sfxge/common/efx_bootcfg.c	Fri Nov 23 10:20:32 2018	(r340817)
@@ -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 @@ fail10:
 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);
 

Modified: head/sys/dev/sfxge/common/efx_nvram.c
==============================================================================
--- head/sys/dev/sfxge/common/efx_nvram.c	Fri Nov 23 10:20:20 2018	(r340816)
+++ head/sys/dev/sfxge/common/efx_nvram.c	Fri Nov 23 10:20:32 2018	(r340817)
@@ -367,11 +367,12 @@ fail1:
 	__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:
@@ -398,6 +402,10 @@ fail2:
 
 fail1:
 	EFSYS_PROBE1(fail1, efx_rc_t, rc);
+
+	/* Always report verification result */
+	if (verify_resultp != NULL)
+		*verify_resultp = verify_result;
 
 	return (rc);
 }

Modified: head/sys/dev/sfxge/sfxge_nvram.c
==============================================================================
--- head/sys/dev/sfxge/sfxge_nvram.c	Fri Nov 23 10:20:20 2018	(r340816)
+++ head/sys/dev/sfxge/sfxge_nvram.c	Fri Nov 23 10:20:32 2018	(r340817)
@@ -104,7 +104,7 @@ sfxge_nvram_rw(struct sfxge_softc *sc, sfxge_ioc_t *ip
 
 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_ty
 
 	rc = efx_nvram_erase(enp, type);
 
-	efx_nvram_rw_finish(enp, type);
+	efx_nvram_rw_finish(enp, type, NULL);
 	return (rc);
 }
 



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201811231020.wANAKXHd031598>