aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/bwi/bwimac.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/dev/bwi/bwimac.c')
-rw-r--r--sys/dev/bwi/bwimac.c57
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