diff options
author | Mohamed Abbas <mohamed.abbas@intel.com> | 2008-10-24 02:48:54 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-10-31 19:02:26 -0400 |
commit | 951891c7ef844919d30aac7b1fc7396fd8be23ff (patch) | |
tree | 3e8c8ba5808265c682104038f0b895451729dc7e | |
parent | 60d32215a94ebba2517b8d92612200ab610943fd (diff) |
iwlwifi: clear scanning bits upon failure
In iwl_bg_request_scan function, if we could not send a
scan command it will go to done.
In done it does the right thing to call mac80211 with
scan complete, but the problem is STATUS_SCAN_HW is still
set causing any future scan to fail. Fix by clearing the scanning status
bits if scan fails.
Signed-off-by: Mohamed Abbas <mohamed.abbas@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-scan.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c index 3379b41fb5ee..b0abf891516f 100644 --- a/drivers/net/wireless/iwlwifi/iwl-scan.c +++ b/drivers/net/wireless/iwlwifi/iwl-scan.c | |||
@@ -834,6 +834,13 @@ static void iwl_bg_request_scan(struct work_struct *data) | |||
834 | return; | 834 | return; |
835 | 835 | ||
836 | done: | 836 | done: |
837 | /* Cannot perform scan. Make sure we clear scanning | ||
838 | * bits from status so next scan request can be performed. | ||
839 | * If we don't clear scanning status bit here all next scan | ||
840 | * will fail | ||
841 | */ | ||
842 | clear_bit(STATUS_SCAN_HW, &priv->status); | ||
843 | clear_bit(STATUS_SCANNING, &priv->status); | ||
837 | /* inform mac80211 scan aborted */ | 844 | /* inform mac80211 scan aborted */ |
838 | queue_work(priv->workqueue, &priv->scan_completed); | 845 | queue_work(priv->workqueue, &priv->scan_completed); |
839 | mutex_unlock(&priv->mutex); | 846 | mutex_unlock(&priv->mutex); |