aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPavel Roskin <proski@gnu.org>2007-06-02 14:00:29 -0400
committerGuido Guenther <agx@bogon.sigxcpu.org>2007-06-03 18:38:23 +0200
commit0aba255685f1dc8025eca83673c2d89ea4393027 (patch)
treefa30b91229bdb1f589a8f703cda285dc4481244a
parent5a98cd97e234ccb9842aa94b719fc3440fac5532 (diff)
[PATCH] Don't ignore errors during firmware download
Signed-off-by: Pavel Roskin <proski@gnu.org>
-rw-r--r--at76_usb.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/at76_usb.c b/at76_usb.c
index c4e99be..14baefc 100644
--- a/at76_usb.c
+++ b/at76_usb.c
@@ -4264,7 +4264,7 @@ static int at76_init_new_device(struct at76_priv *priv)
/* Download external firmware */
-static void at76_load_external_fw(struct at76_priv *priv)
+static int at76_load_external_fw(struct at76_priv *priv)
{
int ret;
int op_mode;
@@ -4276,6 +4276,7 @@ static void at76_load_external_fw(struct at76_priv *priv)
if (op_mode != OPMODE_NORMAL_NIC_WITHOUT_FLASH) {
err("unexpected opmode %d", op_mode);
+ ret = -EINVAL;
goto end_external_fw;
}
@@ -4297,15 +4298,16 @@ static void at76_load_external_fw(struct at76_priv *priv)
mutex_unlock(&priv->mtx);
if ((ret = at76_init_new_device(priv)) < 0)
err("Downloading external firmware failed: %d", ret);
- return;
+ return ret;
end_external_fw:
mutex_unlock(&priv->mtx);
+ return ret;
}
/* Download internal firmware */
-static void at76_load_internal_fw(struct at76_priv *priv)
+static int at76_load_internal_fw(struct at76_priv *priv)
{
int ret;
@@ -4336,6 +4338,7 @@ static void at76_load_internal_fw(struct at76_priv *priv)
end_internal_fw:
mutex_unlock(&priv->mtx);
+ return ret;
}
@@ -6279,7 +6282,9 @@ static int at76_probe(struct usb_interface *interface,
/* download internal firmware part */
at76_dbg(DBG_DEVSTART, "downloading internal firmware");
priv->istate = INTFW_DOWNLOAD;
- at76_load_internal_fw(priv);
+ ret = at76_load_internal_fw(priv);
+ if (ret)
+ goto error;
} else {
/* Internal firmware already inside the device. Get firmware
* version to test if external firmware is loaded.
@@ -6314,7 +6319,9 @@ static int at76_probe(struct usb_interface *interface,
"- download external firmware", ret);
priv->istate = EXTFW_DOWNLOAD;
- at76_load_external_fw(priv);
+ ret = at76_load_external_fw(priv);
+ if (ret)
+ goto error;
} else {
priv->istate = INIT;
if ((ret = at76_init_new_device(priv)) < 0)