svn commit: r293179 - head/sys/dev/iwn
Andriy Voskoboinyk
avos at FreeBSD.org
Mon Jan 4 21:11:29 UTC 2016
Author: avos
Date: Mon Jan 4 21:11:27 2016
New Revision: 293179
URL: https://svnweb.freebsd.org/changeset/base/293179
Log:
iwn: reduce code duplication in iwn_read_firmware()
- Separate 'firmware_put(sc->fw_fp, FIRMWARE_UNLOAD); sc->fw_fp = NULL;'
into iwn_unload_firmware().
- Move error handling to the end of iwn_read_firmware().
No functional changes.
Approved by: adrian (mentor)
Differential Revision: https://reviews.freebsd.org/D4768
Modified:
head/sys/dev/iwn/if_iwn.c
Modified: head/sys/dev/iwn/if_iwn.c
==============================================================================
--- head/sys/dev/iwn/if_iwn.c Mon Jan 4 21:07:08 2016 (r293178)
+++ head/sys/dev/iwn/if_iwn.c Mon Jan 4 21:11:27 2016 (r293179)
@@ -318,6 +318,7 @@ static int iwn_read_firmware_leg(struct
static int iwn_read_firmware_tlv(struct iwn_softc *,
struct iwn_fw_info *, uint16_t);
static int iwn_read_firmware(struct iwn_softc *);
+static void iwn_unload_firmware(struct iwn_softc *);
static int iwn_clock_wait(struct iwn_softc *);
static int iwn_apm_init(struct iwn_softc *);
static void iwn_apm_stop_master(struct iwn_softc *);
@@ -8200,9 +8201,8 @@ iwn_read_firmware(struct iwn_softc *sc)
if (fw->size < sizeof (uint32_t)) {
device_printf(sc->sc_dev, "%s: firmware too short: %zu bytes\n",
__func__, fw->size);
- firmware_put(sc->fw_fp, FIRMWARE_UNLOAD);
- sc->fw_fp = NULL;
- return EINVAL;
+ error = EINVAL;
+ goto fail;
}
/* Retrieve text and data sections. */
@@ -8214,9 +8214,7 @@ iwn_read_firmware(struct iwn_softc *sc)
device_printf(sc->sc_dev,
"%s: could not read firmware sections, error %d\n",
__func__, error);
- firmware_put(sc->fw_fp, FIRMWARE_UNLOAD);
- sc->fw_fp = NULL;
- return error;
+ goto fail;
}
device_printf(sc->sc_dev, "%s: ucode rev=0x%08x\n", __func__, sc->ucode_rev);
@@ -8230,13 +8228,22 @@ iwn_read_firmware(struct iwn_softc *sc)
(fw->boot.textsz & 3) != 0) {
device_printf(sc->sc_dev, "%s: firmware sections too large\n",
__func__);
- firmware_put(sc->fw_fp, FIRMWARE_UNLOAD);
- sc->fw_fp = NULL;
- return EINVAL;
+ error = EINVAL;
+ goto fail;
}
/* We can proceed with loading the firmware. */
return 0;
+
+fail: iwn_unload_firmware(sc);
+ return error;
+}
+
+static void
+iwn_unload_firmware(struct iwn_softc *sc)
+{
+ firmware_put(sc->fw_fp, FIRMWARE_UNLOAD);
+ sc->fw_fp = NULL;
}
static int
@@ -8724,8 +8731,7 @@ iwn_init_locked(struct iwn_softc *sc)
/* Initialize hardware and upload firmware. */
error = iwn_hw_init(sc);
- firmware_put(sc->fw_fp, FIRMWARE_UNLOAD);
- sc->fw_fp = NULL;
+ iwn_unload_firmware(sc);
if (error != 0) {
device_printf(sc->sc_dev,
"%s: could not initialize hardware, error %d\n", __func__,
More information about the svn-src-head
mailing list