>Number: 173584 >Category: kern >Synopsis: [PATCH] [cxgbe] Add hw.cxgbe.force_firmware_install tunable to >force firmware "updates" at module load >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Nov 12 19:20:00 UTC 2012 >Closed-Date: >Last-Modified: >Originator: Garrett Cooper >Release: 9.1-STABLE >Organization: EMC Isilon >Environment: FreeBSD wf158.west.isilon.com 9.1-PRERELEASE FreeBSD 9.1-PRERELEASE #2: Tue Nov 6 14:00:42 PST 2012 r...@wf158.west.isilon.com:/usr/obj/usr/src/sys/GENERIC amd64 >Description: The attached patch adds a tunable which forces a firmware update in order to ensure that when the driver is loaded, if it's running a newer version of firmware it can be downgraded to an older version. Example:
# kenv hw.cxgbe.force_firmware_install=1 # kldload if_cxgbe # sysctl dev.t4nex.0.firmware_version dev.t4nex.0.firmware_version: 1.6.2.0 The firmware version provided on the card was newer before (1.7.x IIRC). >How-To-Repeat: >Fix: Patch attached with submission follows: Index: sys/dev/cxgbe/t4_main.c =================================================================== --- sys/dev/cxgbe/t4_main.c (revision 242655) +++ sys/dev/cxgbe/t4_main.c (working copy) @@ -234,6 +234,9 @@ static int t4_fcoecaps_allowed = 0; TUNABLE_INT("hw.cxgbe.fcoecaps_allowed", &t4_fcoecaps_allowed); +static int t4_force_firmware_install = 0; +TUNABLE_INT("hw.cxgbe.force_firmware_install", &t4_force_firmware_install); + struct intrs_and_queues { int intr_type; /* INTx, MSI, or MSI-X */ int nirq; /* Number of vectors */ @@ -1576,9 +1579,10 @@ /* * Always upgrade, even for minor/micro/build mismatches. * Downgrade only for a major version mismatch or if - * force_firmware_install was specified. + * t4_force_firmware_install was specified. */ - if (fw != NULL && (rc < 0 || v > sc->params.fw_vers)) { + if (fw != NULL && + (t4_force_firmware_install || rc < 0 || v > sc->params.fw_vers)) { device_printf(sc->dev, "installing firmware %d.%d.%d.%d on card.\n", G_FW_HDR_FW_VER_MAJOR(v), G_FW_HDR_FW_VER_MINOR(v), >Release-Note: >Audit-Trail: >Unformatted: _______________________________________________ freebsd-bugs@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-bugs To unsubscribe, send any mail to "freebsd-bugs-unsubscr...@freebsd.org"