aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl3945-base.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl3945-base.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index cc282aa2f43c..371abbf60eac 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -2509,13 +2509,8 @@ static void iwl3945_alive_start(struct iwl_priv *priv)
2509 /* After the ALIVE response, we can send commands to 3945 uCode */ 2509 /* After the ALIVE response, we can send commands to 3945 uCode */
2510 set_bit(STATUS_ALIVE, &priv->status); 2510 set_bit(STATUS_ALIVE, &priv->status);
2511 2511
2512 if (priv->cfg->ops->lib->recover_from_tx_stall) { 2512 /* Enable watchdog to monitor the driver tx queues */
2513 /* Enable timer to monitor the driver queues */ 2513 iwl_setup_watchdog(priv);
2514 mod_timer(&priv->monitor_recover,
2515 jiffies +
2516 msecs_to_jiffies(
2517 priv->cfg->base_params->monitor_recover_period));
2518 }
2519 2514
2520 if (iwl_is_rfkill(priv)) 2515 if (iwl_is_rfkill(priv))
2521 return; 2516 return;
@@ -2572,8 +2567,7 @@ static void __iwl3945_down(struct iwl_priv *priv)
2572 2567
2573 /* Stop TX queues watchdog. We need to have STATUS_EXIT_PENDING bit set 2568 /* Stop TX queues watchdog. We need to have STATUS_EXIT_PENDING bit set
2574 * to prevent rearm timer */ 2569 * to prevent rearm timer */
2575 if (priv->cfg->ops->lib->recover_from_tx_stall) 2570 del_timer_sync(&priv->watchdog);
2576 del_timer_sync(&priv->monitor_recover);
2577 2571
2578 /* Station information will now be cleared in device */ 2572 /* Station information will now be cleared in device */
2579 iwl_clear_ucode_stations(priv, NULL); 2573 iwl_clear_ucode_stations(priv, NULL);
@@ -3775,12 +3769,9 @@ static void iwl3945_setup_deferred_work(struct iwl_priv *priv)
3775 3769
3776 iwl3945_hw_setup_deferred_work(priv); 3770 iwl3945_hw_setup_deferred_work(priv);
3777 3771
3778 if (priv->cfg->ops->lib->recover_from_tx_stall) { 3772 init_timer(&priv->watchdog);
3779 init_timer(&priv->monitor_recover); 3773 priv->watchdog.data = (unsigned long)priv;
3780 priv->monitor_recover.data = (unsigned long)priv; 3774 priv->watchdog.function = iwl_bg_watchdog;
3781 priv->monitor_recover.function =
3782 priv->cfg->ops->lib->recover_from_tx_stall;
3783 }
3784 3775
3785 tasklet_init(&priv->irq_tasklet, (void (*)(unsigned long)) 3776 tasklet_init(&priv->irq_tasklet, (void (*)(unsigned long))
3786 iwl3945_irq_tasklet, (unsigned long)priv); 3777 iwl3945_irq_tasklet, (unsigned long)priv);