diff options
Diffstat (limited to 'sys/dev/bwi/bwimac.c')
-rw-r--r-- | sys/dev/bwi/bwimac.c | 57 |
1 files changed, 21 insertions, 36 deletions
diff --git a/sys/dev/bwi/bwimac.c b/sys/dev/bwi/bwimac.c index 849bf022f1d4..f39ef44d4174 100644 --- a/sys/dev/bwi/bwimac.c +++ b/sys/dev/bwi/bwimac.c @@ -101,7 +101,6 @@ static void bwi_mac_opmode_init(struct bwi_mac *); static void bwi_mac_hostflags_init(struct bwi_mac *); static void bwi_mac_bss_param_init(struct bwi_mac *); -static int bwi_mac_fw_alloc(struct bwi_mac *); static void bwi_mac_fw_free(struct bwi_mac *); static int bwi_mac_fw_load(struct bwi_mac *); static int bwi_mac_fw_init(struct bwi_mac *); @@ -325,10 +324,6 @@ bwi_mac_init(struct bwi_mac *mac) /* * Load and initialize firmwares */ - error = bwi_mac_fw_alloc(mac); - if (error) - return error; - error = bwi_mac_fw_load(mac); if (error) return error; @@ -879,11 +874,10 @@ bwi_fwimage_is_valid(struct bwi_softc *sc, const struct firmware *fw, /* * XXX Error cleanup */ -static int +int bwi_mac_fw_alloc(struct bwi_mac *mac) { struct bwi_softc *sc = mac->mac_sc; - struct ifnet *ifp = sc->sc_ifp; char fwname[64]; int idx; @@ -895,10 +889,8 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) snprintf(fwname, sizeof(fwname), BWI_FW_STUB_PATH, sc->sc_fw_version); mac->mac_stub = firmware_get(fwname); - if (mac->mac_stub == NULL) { - if_printf(ifp, "request firmware %s failed\n", fwname); - return ENOMEM; - } + if (mac->mac_stub == NULL) + goto no_firmware; } if (mac->mac_ucode == NULL) { @@ -907,11 +899,8 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) mac->mac_rev >= 5 ? 5 : mac->mac_rev); mac->mac_ucode = firmware_get(fwname); - if (mac->mac_ucode == NULL) { - if_printf(ifp, "request firmware %s failed\n", fwname); - return ENOMEM; - } - + if (mac->mac_ucode == NULL) + goto no_firmware; if (!bwi_fwimage_is_valid(sc, mac->mac_ucode, BWI_FW_T_UCODE)) return EINVAL; } @@ -922,11 +911,8 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) mac->mac_rev < 5 ? 4 : 5); mac->mac_pcm = firmware_get(fwname); - if (mac->mac_pcm == NULL) { - if_printf(ifp, "request firmware %s failed\n", fwname); - return ENOMEM; - } - + if (mac->mac_pcm == NULL) + goto no_firmware; if (!bwi_fwimage_is_valid(sc, mac->mac_pcm, BWI_FW_T_PCM)) return EINVAL; } @@ -938,8 +924,8 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) } else if (mac->mac_rev >= 5 && mac->mac_rev <= 10) { idx = 5; } else { - if_printf(ifp, "no suitible IV for MAC rev %d\n", - mac->mac_rev); + device_printf(sc->sc_dev, + "no suitible IV for MAC rev %d\n", mac->mac_rev); return ENODEV; } @@ -947,10 +933,8 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) sc->sc_fw_version, idx); mac->mac_iv = firmware_get(fwname); - if (mac->mac_iv == NULL) { - if_printf(ifp, "request firmware %s failed\n", fwname); - return ENOMEM; - } + if (mac->mac_iv == NULL) + goto no_firmware; if (!bwi_fwimage_is_valid(sc, mac->mac_iv, BWI_FW_T_IV)) return EINVAL; } @@ -960,12 +944,12 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) if (mac->mac_rev == 2 || mac->mac_rev == 4 || mac->mac_rev >= 11) { /* No extended IV */ - goto back; + return (0); } else if (mac->mac_rev >= 5 && mac->mac_rev <= 10) { idx = 5; } else { - if_printf(ifp, "no suitible ExtIV for MAC rev %d\n", - mac->mac_rev); + device_printf(sc->sc_dev, + "no suitible ExtIV for MAC rev %d\n", mac->mac_rev); return ENODEV; } @@ -973,15 +957,16 @@ bwi_mac_fw_alloc(struct bwi_mac *mac) sc->sc_fw_version, idx); mac->mac_iv_ext = firmware_get(fwname); - if (mac->mac_iv_ext == NULL) { - if_printf(ifp, "request firmware %s failed\n", fwname); - return ENOMEM; - } + if (mac->mac_iv_ext == NULL) + goto no_firmware; if (!bwi_fwimage_is_valid(sc, mac->mac_iv_ext, BWI_FW_T_IV)) return EINVAL; } -back: - return 0; + return (0); + +no_firmware: + device_printf(sc->sc_dev, "request firmware %s failed\n", fwname); + return (ENOENT); } static void |