aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
diff options
context:
space:
mode:
authorEmmanuel Grumbach <emmanuel.grumbach@intel.com>2010-06-29 14:29:49 -0400
committerWey-Yi Guy <wey-yi.w.guy@intel.com>2010-07-09 13:17:24 -0400
commit9726f347f82b0ce802530deb00ee2dde369e1d2f (patch)
treec34f85766da18b444c08465b8c0bc96c6e2c8e68 /drivers/net/wireless/iwlwifi/iwl-agn-tx.c
parent41691de32664f06507c24cea499b307624e3183e (diff)
iwlagn: fix the bit mask of a FH register in stop Tx DMA flow
When we stop the Tx DMA channels, we poll bits 16:31 in FH_TSSR_RX_STATUS_REG. From 4965 and up, only the bits 16:26 are legal. Bits 27:31 are not used and are always unset. Polling them will lead to fail on timeout but since the timeout is quite small, the stall was not felt. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn-tx.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-agn-tx.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
index 2573234e4db1..55a1b31fd09a 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
@@ -950,9 +950,12 @@ void iwlagn_txq_ctx_stop(struct iwl_priv *priv)
950 /* Stop each Tx DMA channel, and wait for it to be idle */ 950 /* Stop each Tx DMA channel, and wait for it to be idle */
951 for (ch = 0; ch < priv->hw_params.dma_chnl_num; ch++) { 951 for (ch = 0; ch < priv->hw_params.dma_chnl_num; ch++) {
952 iwl_write_direct32(priv, FH_TCSR_CHNL_TX_CONFIG_REG(ch), 0x0); 952 iwl_write_direct32(priv, FH_TCSR_CHNL_TX_CONFIG_REG(ch), 0x0);
953 iwl_poll_direct_bit(priv, FH_TSSR_TX_STATUS_REG, 953 if (iwl_poll_direct_bit(priv, FH_TSSR_TX_STATUS_REG,
954 FH_TSSR_TX_STATUS_REG_MSK_CHNL_IDLE(ch), 954 FH_TSSR_TX_STATUS_REG_MSK_CHNL_IDLE(ch),
955 1000); 955 1000))
956 IWL_ERR(priv, "Failing on timeout while stopping"
957 " DMA channel %d [0x%08x]", ch,
958 iwl_read_direct32(priv, FH_TSSR_TX_STATUS_REG));
956 } 959 }
957 spin_unlock_irqrestore(&priv->lock, flags); 960 spin_unlock_irqrestore(&priv->lock, flags);
958} 961}