diff options
author | Winkler, Tomas <tomas.winkler@intel.com> | 2008-11-19 18:32:27 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-11-26 09:47:39 -0500 |
commit | 40fc95d57caf258e20282f6526b695426d65a73a (patch) | |
tree | a851f2787c69806daae6b0e21f057bc14021637e | |
parent | 31a73fe4f3284d94d52774c285e9e98a5f441d21 (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.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-5000.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-fh.h | 5 |
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 |