diff options
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn-lib.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn-lib.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c index e202a40cbcb..75e1035330b 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-lib.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-lib.c | |||
@@ -2363,12 +2363,21 @@ void iwlagn_stop_device(struct iwl_priv *priv) | |||
2363 | /* device going down, Stop using ICT table */ | 2363 | /* device going down, Stop using ICT table */ |
2364 | iwl_disable_ict(priv); | 2364 | iwl_disable_ict(priv); |
2365 | 2365 | ||
2366 | iwlagn_txq_ctx_stop(priv); | 2366 | /* |
2367 | iwlagn_rxq_stop(priv); | 2367 | * If a HW restart happens during firmware loading, |
2368 | 2368 | * then the firmware loading might call this function | |
2369 | /* Power-down device's busmaster DMA clocks */ | 2369 | * and later it might be called again due to the |
2370 | iwl_write_prph(priv, APMG_CLK_DIS_REG, APMG_CLK_VAL_DMA_CLK_RQT); | 2370 | * restart. So don't process again if the device is |
2371 | udelay(5); | 2371 | * already dead. |
2372 | */ | ||
2373 | if (test_bit(STATUS_DEVICE_ENABLED, &priv->status)) { | ||
2374 | iwlagn_txq_ctx_stop(priv); | ||
2375 | iwlagn_rxq_stop(priv); | ||
2376 | |||
2377 | /* Power-down device's busmaster DMA clocks */ | ||
2378 | iwl_write_prph(priv, APMG_CLK_DIS_REG, APMG_CLK_VAL_DMA_CLK_RQT); | ||
2379 | udelay(5); | ||
2380 | } | ||
2372 | 2381 | ||
2373 | /* Make sure (redundant) we've released our request to stay awake */ | 2382 | /* Make sure (redundant) we've released our request to stay awake */ |
2374 | iwl_clear_bit(priv, CSR_GP_CNTRL, CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ); | 2383 | iwl_clear_bit(priv, CSR_GP_CNTRL, CSR_GP_CNTRL_REG_FLAG_MAC_ACCESS_REQ); |