aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c14
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-scan.c2
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c16
3 files changed, 8 insertions, 24 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 36df9a7fcbcb..d2315debd1b8 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -2892,8 +2892,9 @@ static void __iwl_down(struct iwl_priv *priv)
2892 2892
2893 IWL_DEBUG_INFO(priv, DRV_NAME " is going down\n"); 2893 IWL_DEBUG_INFO(priv, DRV_NAME " is going down\n");
2894 2894
2895 if (!exit_pending) 2895 iwl_scan_cancel_timeout(priv, 200);
2896 set_bit(STATUS_EXIT_PENDING, &priv->status); 2896
2897 exit_pending = test_and_set_bit(STATUS_EXIT_PENDING, &priv->status);
2897 2898
2898 /* Stop TX queues watchdog. We need to have STATUS_EXIT_PENDING bit set 2899 /* Stop TX queues watchdog. We need to have STATUS_EXIT_PENDING bit set
2899 * to prevent rearm timer */ 2900 * to prevent rearm timer */
@@ -3503,15 +3504,6 @@ static void iwl_mac_stop(struct ieee80211_hw *hw)
3503 3504
3504 priv->is_open = 0; 3505 priv->is_open = 0;
3505 3506
3506 if (iwl_is_ready_rf(priv) || test_bit(STATUS_SCAN_HW, &priv->status)) {
3507 /* stop mac, cancel any scan request and clear
3508 * RXON_FILTER_ASSOC_MSK BIT
3509 */
3510 mutex_lock(&priv->mutex);
3511 iwl_scan_cancel_timeout(priv, 100);
3512 mutex_unlock(&priv->mutex);
3513 }
3514
3515 iwl_down(priv); 3507 iwl_down(priv);
3516 3508
3517 flush_workqueue(priv->workqueue); 3509 flush_workqueue(priv->workqueue);
diff --git a/drivers/net/wireless/iwlwifi/iwl-scan.c b/drivers/net/wireless/iwlwifi/iwl-scan.c
index 22bdc986c03e..ea338498ee1c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-scan.c
+++ b/drivers/net/wireless/iwlwifi/iwl-scan.c
@@ -71,7 +71,7 @@ int iwl_scan_cancel(struct iwl_priv *priv)
71 if (test_bit(STATUS_SCANNING, &priv->status)) { 71 if (test_bit(STATUS_SCANNING, &priv->status)) {
72 if (!test_and_set_bit(STATUS_SCAN_ABORTING, &priv->status)) { 72 if (!test_and_set_bit(STATUS_SCAN_ABORTING, &priv->status)) {
73 IWL_DEBUG_SCAN(priv, "Queuing scan abort.\n"); 73 IWL_DEBUG_SCAN(priv, "Queuing scan abort.\n");
74 queue_work(priv->workqueue, &priv->abort_scan); 74 schedule_work(&priv->abort_scan);
75 75
76 } else 76 } else
77 IWL_DEBUG_SCAN(priv, "Scan abort already in progress.\n"); 77 IWL_DEBUG_SCAN(priv, "Scan abort already in progress.\n");
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index fc553bacef17..6cc5ba2a2e39 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -2567,12 +2567,13 @@ static void iwl3945_cancel_deferred_work(struct iwl_priv *priv);
2567static void __iwl3945_down(struct iwl_priv *priv) 2567static void __iwl3945_down(struct iwl_priv *priv)
2568{ 2568{
2569 unsigned long flags; 2569 unsigned long flags;
2570 int exit_pending = test_bit(STATUS_EXIT_PENDING, &priv->status); 2570 int exit_pending;
2571 2571
2572 IWL_DEBUG_INFO(priv, DRV_NAME " is going down\n"); 2572 IWL_DEBUG_INFO(priv, DRV_NAME " is going down\n");
2573 2573
2574 if (!exit_pending) 2574 iwl_scan_cancel_timeout(priv, 200);
2575 set_bit(STATUS_EXIT_PENDING, &priv->status); 2575
2576 exit_pending = test_and_set_bit(STATUS_EXIT_PENDING, &priv->status);
2576 2577
2577 /* Stop TX queues watchdog. We need to have STATUS_EXIT_PENDING bit set 2578 /* Stop TX queues watchdog. We need to have STATUS_EXIT_PENDING bit set
2578 * to prevent rearm timer */ 2579 * to prevent rearm timer */
@@ -3172,15 +3173,6 @@ static void iwl3945_mac_stop(struct ieee80211_hw *hw)
3172 3173
3173 priv->is_open = 0; 3174 priv->is_open = 0;
3174 3175
3175 if (iwl_is_ready_rf(priv)) {
3176 /* stop mac, cancel any scan request and clear
3177 * RXON_FILTER_ASSOC_MSK BIT
3178 */
3179 mutex_lock(&priv->mutex);
3180 iwl_scan_cancel_timeout(priv, 100);
3181 mutex_unlock(&priv->mutex);
3182 }
3183
3184 iwl3945_down(priv); 3176 iwl3945_down(priv);
3185 3177
3186 flush_workqueue(priv->workqueue); 3178 flush_workqueue(priv->workqueue);