diff options
author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2010-06-29 14:29:49 -0400 |
---|---|---|
committer | Wey-Yi Guy <wey-yi.w.guy@intel.com> | 2010-07-09 13:17:24 -0400 |
commit | 9726f347f82b0ce802530deb00ee2dde369e1d2f (patch) | |
tree | c34f85766da18b444c08465b8c0bc96c6e2c8e68 /drivers/net/wireless/iwlwifi/iwl-agn-tx.c | |
parent | 41691de32664f06507c24cea499b307624e3183e (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.c | 7 |
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 | } |