summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2010-08-18 09:35:22 -0700
committerJohn W. Linville <linville@tuxdriver.com>2010-08-24 16:32:05 -0400
commit672ddeffeb2afad18fe1a2fc5aa14a07b4da1551 (patch)
tree4e382dd8ddaf81af6cf7431fb1818919da6fb5b0
parent54c8067a4a0606f466faf0f30b16684b00060e70 (diff)
iwlwifi: do not spuriously call ieee80211_scan_completed
When a scan is aborted because the corresponding virtual interface is removed, we may still later attempt to tell mac80211 that the scan completed. This is obviously wrong, since we already told it that it was aborted, so don't do that. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-scan.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c
index ac510840519..8d7fa59364f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-scan.c
+++ b/drivers/net/wireless/iwlwifi/iwl-scan.c
@@ -508,6 +508,7 @@ static void iwl_bg_scan_completed(struct work_struct *work)
struct iwl_priv *priv =
container_of(work, struct iwl_priv, scan_completed);
bool internal = false;
+ bool scan_completed = false;
IWL_DEBUG_SCAN(priv, "SCAN complete scan\n");
@@ -518,7 +519,8 @@ static void iwl_bg_scan_completed(struct work_struct *work)
priv->is_internal_short_scan = false;
IWL_DEBUG_SCAN(priv, "internal short scan completed\n");
internal = true;
- } else {
+ } else if (priv->scan_request) {
+ scan_completed = true;
priv->scan_request = NULL;
priv->scan_vif = NULL;
}
@@ -549,7 +551,7 @@ static void iwl_bg_scan_completed(struct work_struct *work)
* into driver again into functions that will attempt to take
* mutex.
*/
- if (!internal)
+ if (scan_completed)
ieee80211_scan_completed(priv->hw, false);
}