summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorBing Zhao <bzhao@marvell.com>2013-03-15 18:47:07 -0700
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-04-05 09:25:50 -0700
commit1d50fe196140b67c14c5f969e67e0b8583e3ead8 (patch)
tree166ed52b5e60958d3a4c16600bfa5b62062948ea /drivers
parenta35577b77d5bc0f532b91d2b1eaa8acadbed13ec (diff)
mwifiex: cancel cmd timer and free curr_cmd in shutdown process
commit 084c7189acb3f969c855536166042e27f5dd703f upstream. curr_cmd points to the command that is in processing or waiting for its command response from firmware. If the function shutdown happens to occur at this time we should cancel the cmd timer and put the command back to free queue. Tested-by: Marco Cesarano <marco@marvell.com> Signed-off-by: Bing Zhao <bzhao@marvell.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/mwifiex/init.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/wireless/mwifiex/init.c b/drivers/net/wireless/mwifiex/init.c
index 39f03ce5a5b1..78c3aa6a6d2c 100644
--- a/drivers/net/wireless/mwifiex/init.c
+++ b/drivers/net/wireless/mwifiex/init.c
@@ -707,6 +707,14 @@ mwifiex_shutdown_drv(struct mwifiex_adapter *adapter)
return ret;
}
+ /* cancel current command */
+ if (adapter->curr_cmd) {
+ dev_warn(adapter->dev, "curr_cmd is still in processing\n");
+ del_timer(&adapter->cmd_timer);
+ mwifiex_insert_cmd_to_free_q(adapter, adapter->curr_cmd);
+ adapter->curr_cmd = NULL;
+ }
+
/* shut down mwifiex */
dev_dbg(adapter->dev, "info: shutdown mwifiex...\n");