diff options
author | Holger Schurig <hs4233@mail.mn-solutions.de> | 2008-05-23 10:04:13 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-06-03 15:00:15 -0400 |
commit | ef707b8387c13b6aa3353b5519aa465cbe06034f (patch) | |
tree | c54819e888135fb8efa8c79f3cdd0c82a790258a /drivers/net/wireless/libertas/main.c | |
parent | df349f9fe7500fcb98f560c74b5e99477ca1df1c (diff) |
libertas: before sleeping, check for a command result
If we don't check for a command response early, but rather sleep,
then we might sleep despite an already-received command response.
This will lead to a command-timeout.
Signed-off-by: Holger Schurig <hs4233@mail.mn-solutions.de>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/libertas/main.c')
-rw-r--r-- | drivers/net/wireless/libertas/main.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/libertas/main.c b/drivers/net/wireless/libertas/main.c index 0cd4702d2f76..faa4db1838b6 100644 --- a/drivers/net/wireless/libertas/main.c +++ b/drivers/net/wireless/libertas/main.c | |||
@@ -722,14 +722,14 @@ static int lbs_thread(void *data) | |||
722 | shouldsleep = 1; /* Something is en route to the device already */ | 722 | shouldsleep = 1; /* Something is en route to the device already */ |
723 | else if (priv->tx_pending_len > 0) | 723 | else if (priv->tx_pending_len > 0) |
724 | shouldsleep = 0; /* We've a packet to send */ | 724 | shouldsleep = 0; /* We've a packet to send */ |
725 | else if (priv->resp_len[priv->resp_idx]) | ||
726 | shouldsleep = 0; /* We have a command response */ | ||
725 | else if (priv->cur_cmd) | 727 | else if (priv->cur_cmd) |
726 | shouldsleep = 1; /* Can't send a command; one already running */ | 728 | shouldsleep = 1; /* Can't send a command; one already running */ |
727 | else if (!list_empty(&priv->cmdpendingq)) | 729 | else if (!list_empty(&priv->cmdpendingq)) |
728 | shouldsleep = 0; /* We have a command to send */ | 730 | shouldsleep = 0; /* We have a command to send */ |
729 | else if (__kfifo_len(priv->event_fifo)) | 731 | else if (__kfifo_len(priv->event_fifo)) |
730 | shouldsleep = 0; /* We have an event to process */ | 732 | shouldsleep = 0; /* We have an event to process */ |
731 | else if (priv->resp_len[priv->resp_idx]) | ||
732 | shouldsleep = 0; /* We have a command response */ | ||
733 | else | 733 | else |
734 | shouldsleep = 1; /* No command */ | 734 | shouldsleep = 1; /* No command */ |
735 | 735 | ||