aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-agn-lib.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn-lib.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-lib.c21
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);