diff options
author | David Woodhouse <dwmw2@infradead.org> | 2007-12-15 19:33:43 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 15:07:37 -0800 |
commit | 2a345099a4fbe551a1982630b3d89c85fa5a341d (patch) | |
tree | 6556158a8b8b3f63385e36a80b9b7d7f58e8fc92 /drivers/net/wireless/libertas/cmdresp.c | |
parent | 9fae899c2b5dc224042da63b14118abdb22ae9b6 (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.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/libertas/cmdresp.c b/drivers/net/wireless/libertas/cmdresp.c index 4c22e784951..ef63c376c55 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; |