diff options
author | Ben Cahill <ben.m.cahill@intel.com> | 2009-11-06 17:53:01 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-11-11 15:23:47 -0500 |
commit | 8756990f99ecdfe64ed32cce878e36bddc16bdcc (patch) | |
tree | db7a218666ed46af34fdb03ce3e0436b5da0c180 /drivers/net/wireless/iwlwifi/iwl-agn.c | |
parent | a7e6611034530fce62f5499f77dd4fb6cde4d130 (diff) |
iwlagn: update write pointers in iwl_irq_tasklet()
Follow-up to "update write pointers for all tx queues after wakeup"; that
patch changed iwl_irq_tasklet_legacy(), but not iwl_irq_tasklet(), so
newer devices were not covered.
Comments from original patch:
Wakeup interrupt has been updating write pointers (indexes, actually) only
for tx queues 0-5. This is adequate just for 3945, but inadequate for other
devices, all of which have more tx queues. Now updating all tx/command queues,
so device can be aware of all new tx and host commands enqueued while
device was asleep.
This can potentially improve data traffic bandwidth and/or latency.
Signed-off-by: Ben Cahill <ben.m.cahill@intel.com>
Signed-off-by: Reinette Chatre <reinette.chatre@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-agn.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-agn.c | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c index 2abd1f5b5eea..8198e14b8fad 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn.c | |||
@@ -1084,6 +1084,7 @@ static void iwl_irq_tasklet(struct iwl_priv *priv) | |||
1084 | u32 inta = 0; | 1084 | u32 inta = 0; |
1085 | u32 handled = 0; | 1085 | u32 handled = 0; |
1086 | unsigned long flags; | 1086 | unsigned long flags; |
1087 | u32 i; | ||
1087 | #ifdef CONFIG_IWLWIFI_DEBUG | 1088 | #ifdef CONFIG_IWLWIFI_DEBUG |
1088 | u32 inta_mask; | 1089 | u32 inta_mask; |
1089 | #endif | 1090 | #endif |
@@ -1194,12 +1195,8 @@ static void iwl_irq_tasklet(struct iwl_priv *priv) | |||
1194 | if (inta & CSR_INT_BIT_WAKEUP) { | 1195 | if (inta & CSR_INT_BIT_WAKEUP) { |
1195 | IWL_DEBUG_ISR(priv, "Wakeup interrupt\n"); | 1196 | IWL_DEBUG_ISR(priv, "Wakeup interrupt\n"); |
1196 | iwl_rx_queue_update_write_ptr(priv, &priv->rxq); | 1197 | iwl_rx_queue_update_write_ptr(priv, &priv->rxq); |
1197 | iwl_txq_update_write_ptr(priv, &priv->txq[0]); | 1198 | for (i = 0; i < priv->hw_params.max_txq_num; i++) |
1198 | iwl_txq_update_write_ptr(priv, &priv->txq[1]); | 1199 | iwl_txq_update_write_ptr(priv, &priv->txq[i]); |
1199 | iwl_txq_update_write_ptr(priv, &priv->txq[2]); | ||
1200 | iwl_txq_update_write_ptr(priv, &priv->txq[3]); | ||
1201 | iwl_txq_update_write_ptr(priv, &priv->txq[4]); | ||
1202 | iwl_txq_update_write_ptr(priv, &priv->txq[5]); | ||
1203 | 1200 | ||
1204 | priv->isr_stats.wakeup++; | 1201 | priv->isr_stats.wakeup++; |
1205 | 1202 | ||