aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn.c21
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-dev.h1
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c21
3 files changed, 14 insertions, 29 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
index 1c54425afe22..b528a20ade4f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
@@ -2439,18 +2439,6 @@ static void iwl_bg_run_time_calib_work(struct work_struct *work)
2439 return; 2439 return;
2440} 2440}
2441 2441
2442static void iwl_bg_up(struct work_struct *data)
2443{
2444 struct iwl_priv *priv = container_of(data, struct iwl_priv, up);
2445
2446 if (test_bit(STATUS_EXIT_PENDING, &priv->status))
2447 return;
2448
2449 mutex_lock(&priv->mutex);
2450 __iwl_up(priv);
2451 mutex_unlock(&priv->mutex);
2452}
2453
2454static void iwl_bg_restart(struct work_struct *data) 2442static void iwl_bg_restart(struct work_struct *data)
2455{ 2443{
2456 struct iwl_priv *priv = container_of(data, struct iwl_priv, restart); 2444 struct iwl_priv *priv = container_of(data, struct iwl_priv, restart);
@@ -2467,7 +2455,13 @@ static void iwl_bg_restart(struct work_struct *data)
2467 ieee80211_restart_hw(priv->hw); 2455 ieee80211_restart_hw(priv->hw);
2468 } else { 2456 } else {
2469 iwl_down(priv); 2457 iwl_down(priv);
2470 queue_work(priv->workqueue, &priv->up); 2458
2459 if (test_bit(STATUS_EXIT_PENDING, &priv->status))
2460 return;
2461
2462 mutex_lock(&priv->mutex);
2463 __iwl_up(priv);
2464 mutex_unlock(&priv->mutex);
2471 } 2465 }
2472} 2466}
2473 2467
@@ -3285,7 +3279,6 @@ static void iwl_setup_deferred_work(struct iwl_priv *priv)
3285 3279
3286 init_waitqueue_head(&priv->wait_command_queue); 3280 init_waitqueue_head(&priv->wait_command_queue);
3287 3281
3288 INIT_WORK(&priv->up, iwl_bg_up);
3289 INIT_WORK(&priv->restart, iwl_bg_restart); 3282 INIT_WORK(&priv->restart, iwl_bg_restart);
3290 INIT_WORK(&priv->rx_replenish, iwl_bg_rx_replenish); 3283 INIT_WORK(&priv->rx_replenish, iwl_bg_rx_replenish);
3291 INIT_WORK(&priv->beacon_update, iwl_bg_beacon_update); 3284 INIT_WORK(&priv->beacon_update, iwl_bg_beacon_update);
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
index 9b0a5cbc20f9..1cd565aef62c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
@@ -1264,7 +1264,6 @@ struct iwl_priv {
1264 1264
1265 struct workqueue_struct *workqueue; 1265 struct workqueue_struct *workqueue;
1266 1266
1267 struct work_struct up;
1268 struct work_struct restart; 1267 struct work_struct restart;
1269 struct work_struct calibrated_work; 1268 struct work_struct calibrated_work;
1270 struct work_struct scan_completed; 1269 struct work_struct scan_completed;
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index cd42b5838b38..119da54116de 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -3033,18 +3033,6 @@ static void iwl3945_bg_request_scan(struct work_struct *data)
3033 mutex_unlock(&priv->mutex); 3033 mutex_unlock(&priv->mutex);
3034} 3034}
3035 3035
3036static void iwl3945_bg_up(struct work_struct *data)
3037{
3038 struct iwl_priv *priv = container_of(data, struct iwl_priv, up);
3039
3040 if (test_bit(STATUS_EXIT_PENDING, &priv->status))
3041 return;
3042
3043 mutex_lock(&priv->mutex);
3044 __iwl3945_up(priv);
3045 mutex_unlock(&priv->mutex);
3046}
3047
3048static void iwl3945_bg_restart(struct work_struct *data) 3036static void iwl3945_bg_restart(struct work_struct *data)
3049{ 3037{
3050 struct iwl_priv *priv = container_of(data, struct iwl_priv, restart); 3038 struct iwl_priv *priv = container_of(data, struct iwl_priv, restart);
@@ -3061,7 +3049,13 @@ static void iwl3945_bg_restart(struct work_struct *data)
3061 ieee80211_restart_hw(priv->hw); 3049 ieee80211_restart_hw(priv->hw);
3062 } else { 3050 } else {
3063 iwl3945_down(priv); 3051 iwl3945_down(priv);
3064 queue_work(priv->workqueue, &priv->up); 3052
3053 if (test_bit(STATUS_EXIT_PENDING, &priv->status))
3054 return;
3055
3056 mutex_lock(&priv->mutex);
3057 __iwl3945_up(priv);
3058 mutex_unlock(&priv->mutex);
3065 } 3059 }
3066} 3060}
3067 3061
@@ -3782,7 +3776,6 @@ static void iwl3945_setup_deferred_work(struct iwl_priv *priv)
3782 3776
3783 init_waitqueue_head(&priv->wait_command_queue); 3777 init_waitqueue_head(&priv->wait_command_queue);
3784 3778
3785 INIT_WORK(&priv->up, iwl3945_bg_up);
3786 INIT_WORK(&priv->restart, iwl3945_bg_restart); 3779 INIT_WORK(&priv->restart, iwl3945_bg_restart);
3787 INIT_WORK(&priv->rx_replenish, iwl3945_bg_rx_replenish); 3780 INIT_WORK(&priv->rx_replenish, iwl3945_bg_rx_replenish);
3788 INIT_WORK(&priv->beacon_update, iwl3945_bg_beacon_update); 3781 INIT_WORK(&priv->beacon_update, iwl3945_bg_beacon_update);