aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWinkler, Tomas <tomas.winkler@intel.com>2008-11-19 18:32:27 -0500
committerJohn W. Linville <linville@tuxdriver.com>2008-11-26 09:47:39 -0500
commit40fc95d57caf258e20282f6526b695426d65a73a (patch)
treea851f2787c69806daae6b0e21f057bc14021637e
parent31a73fe4f3284d94d52774c285e9e98a5f441d21 (diff)
iwlwifi: TX update chicken bits
This instructs FH to increment the retry count of a packet when it is brought from the memory to TX-FIFO to save transactions during aggregation flow. Signed-off-by: Tomas Winkler <tomas.winkler@intel.com> Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-4965.c6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-5000.c6
-rw-r--r--drivers/net/wireless/iwlwifi/iwl-fh.h5
3 files changed, 17 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c
index 60769b12b685..ab0b40531989 100644
--- a/drivers/net/wireless/iwlwifi/iwl-4965.c
+++ b/drivers/net/wireless/iwlwifi/iwl-4965.c
@@ -695,6 +695,7 @@ static int iwl4965_alive_notify(struct iwl_priv *priv)
695 unsigned long flags; 695 unsigned long flags;
696 int ret; 696 int ret;
697 int i, chan; 697 int i, chan;
698 u32 reg_val;
698 699
699 spin_lock_irqsave(&priv->lock, flags); 700 spin_lock_irqsave(&priv->lock, flags);
700 701
@@ -724,6 +725,11 @@ static int iwl4965_alive_notify(struct iwl_priv *priv)
724 FH_TCSR_TX_CONFIG_REG_VAL_DMA_CHNL_ENABLE | 725 FH_TCSR_TX_CONFIG_REG_VAL_DMA_CHNL_ENABLE |
725 FH_TCSR_TX_CONFIG_REG_VAL_DMA_CREDIT_ENABLE); 726 FH_TCSR_TX_CONFIG_REG_VAL_DMA_CREDIT_ENABLE);
726 727
728 /* Update FH chicken bits */
729 reg_val = iwl_read_direct32(priv, FH_TX_CHICKEN_BITS_REG);
730 iwl_write_direct32(priv, FH_TX_CHICKEN_BITS_REG,
731 reg_val | FH_TX_CHICKEN_BITS_SCD_AUTO_RETRY_EN);
732
727 /* Disable chain mode for all queues */ 733 /* Disable chain mode for all queues */
728 iwl_write_prph(priv, IWL49_SCD_QUEUECHAIN_SEL, 0); 734 iwl_write_prph(priv, IWL49_SCD_QUEUECHAIN_SEL, 0);
729 735
diff --git a/drivers/net/wireless/iwlwifi/iwl-5000.c b/drivers/net/wireless/iwlwifi/iwl-5000.c
index d73760c3f769..a738886b434f 100644
--- a/drivers/net/wireless/iwlwifi/iwl-5000.c
+++ b/drivers/net/wireless/iwlwifi/iwl-5000.c
@@ -703,6 +703,7 @@ static int iwl5000_alive_notify(struct iwl_priv *priv)
703 unsigned long flags; 703 unsigned long flags;
704 int ret; 704 int ret;
705 int i, chan; 705 int i, chan;
706 u32 reg_val;
706 707
707 spin_lock_irqsave(&priv->lock, flags); 708 spin_lock_irqsave(&priv->lock, flags);
708 709
@@ -732,6 +733,11 @@ static int iwl5000_alive_notify(struct iwl_priv *priv)
732 FH_TCSR_TX_CONFIG_REG_VAL_DMA_CHNL_ENABLE | 733 FH_TCSR_TX_CONFIG_REG_VAL_DMA_CHNL_ENABLE |
733 FH_TCSR_TX_CONFIG_REG_VAL_DMA_CREDIT_ENABLE); 734 FH_TCSR_TX_CONFIG_REG_VAL_DMA_CREDIT_ENABLE);
734 735
736 /* Update FH chicken bits */
737 reg_val = iwl_read_direct32(priv, FH_TX_CHICKEN_BITS_REG);
738 iwl_write_direct32(priv, FH_TX_CHICKEN_BITS_REG,
739 reg_val | FH_TX_CHICKEN_BITS_SCD_AUTO_RETRY_EN);
740
735 iwl_write_prph(priv, IWL50_SCD_QUEUECHAIN_SEL, 741 iwl_write_prph(priv, IWL50_SCD_QUEUECHAIN_SEL,
736 IWL50_SCD_QUEUECHAIN_SEL_ALL(priv->hw_params.max_txq_num)); 742 IWL50_SCD_QUEUECHAIN_SEL_ALL(priv->hw_params.max_txq_num));
737 iwl_write_prph(priv, IWL50_SCD_AGGR_SEL, 0); 743 iwl_write_prph(priv, IWL50_SCD_AGGR_SEL, 0);
diff --git a/drivers/net/wireless/iwlwifi/iwl-fh.h b/drivers/net/wireless/iwlwifi/iwl-fh.h
index bc20acb36aa6..c3dadb03701c 100644
--- a/drivers/net/wireless/iwlwifi/iwl-fh.h
+++ b/drivers/net/wireless/iwlwifi/iwl-fh.h
@@ -396,6 +396,11 @@
396#define FH_SRVC_CHNL_SRAM_ADDR_REG(_chnl) \ 396#define FH_SRVC_CHNL_SRAM_ADDR_REG(_chnl) \
397 (FH_SRVC_LOWER_BOUND + ((_chnl) - 9) * 0x4) 397 (FH_SRVC_LOWER_BOUND + ((_chnl) - 9) * 0x4)
398 398
399#define FH_TX_CHICKEN_BITS_REG (FH_MEM_LOWER_BOUND + 0xE98)
400/* Instruct FH to increment the retry count of a packet when
401 * it is brought from the memory to TX-FIFO
402 */
403#define FH_TX_CHICKEN_BITS_SCD_AUTO_RETRY_EN (0x00000002)
399 404
400/** 405/**
401 * struct iwl_rb_status - reseve buffer status 406 * struct iwl_rb_status - reseve buffer status