summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/libertas/cmdresp.c
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2007-12-15 19:33:43 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 15:07:37 -0800
commit2a345099a4fbe551a1982630b3d89c85fa5a341d (patch)
tree6556158a8b8b3f63385e36a80b9b7d7f58e8fc92 /drivers/net/wireless/libertas/cmdresp.c
parent9fae899c2b5dc224042da63b14118abdb22ae9b6 (diff)
libertas: handle command timeout in main thread instead of directly in timer
And handle the case where it times out more than once, too, instead of locking up for ever. Signed-off-by: David Woodhouse <dwmw2@infradead.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/libertas/cmdresp.c')
-rw-r--r--drivers/net/wireless/libertas/cmdresp.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/libertas/cmdresp.c b/drivers/net/wireless/libertas/cmdresp.c
index 4c22e7849515..ef63c376c552 100644
--- a/drivers/net/wireless/libertas/cmdresp.c
+++ b/drivers/net/wireless/libertas/cmdresp.c
@@ -667,6 +667,12 @@ int lbs_process_rx_command(struct lbs_private *priv)
/* Now we got response from FW, cancel the command timer */
del_timer(&priv->command_timer);
+ priv->cmd_timed_out = 0;
+ if (priv->nr_retries) {
+ lbs_pr_info("Received result %x to command %x after %d retries\n",
+ result, curcmd, priv->nr_retries);
+ priv->nr_retries = 0;
+ }
/* Store the response code to cur_cmd_retcode. */
priv->cur_cmd_retcode = result;