diff options
author | Pavel Roskin <proski@gnu.org> | 2007-06-02 14:00:29 -0400 |
---|---|---|
committer | Guido Guenther <agx@bogon.sigxcpu.org> | 2007-06-03 18:38:23 +0200 |
commit | 0aba255685f1dc8025eca83673c2d89ea4393027 (patch) | |
tree | fa30b91229bdb1f589a8f703cda285dc4481244a | |
parent | 5a98cd97e234ccb9842aa94b719fc3440fac5532 (diff) |
[PATCH] Don't ignore errors during firmware download
Signed-off-by: Pavel Roskin <proski@gnu.org>
-rw-r--r-- | at76_usb.c | 17 |
1 files changed, 12 insertions, 5 deletions
@@ -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) |