diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.c | 14 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-scan.c | 2 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl3945-base.c | 16 |
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); | |||
2567 | static void __iwl3945_down(struct iwl_priv *priv) | 2567 | static 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); |