diff options
author | Tomas Winkler <tomas.winkler@intel.com> | 2008-04-15 00:16:10 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-04-16 15:59:59 -0400 |
commit | e2a722eba1b3aa504ae177353d100287398881c3 (patch) | |
tree | efe98aadadfd7c432ae6d108adff0d15c259096c /drivers/net/wireless/iwlwifi/iwl-4965.c | |
parent | 7480513f5b436321f86f5a5210af5bf8edb19e9a (diff) |
iwlwifi: Fix byte count table for fragmented packets
This patch fix byte count table update. Table must be updated for each
fragment
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>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl-4965.c')
-rw-r--r-- | drivers/net/wireless/iwlwifi/iwl-4965.c | 13 |
1 files changed, 5 insertions, 8 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl-4965.c b/drivers/net/wireless/iwlwifi/iwl-4965.c index 822169e61e9b..04fed5e0724a 100644 --- a/drivers/net/wireless/iwlwifi/iwl-4965.c +++ b/drivers/net/wireless/iwlwifi/iwl-4965.c | |||
@@ -3141,18 +3141,16 @@ static void iwl4965_hw_card_show_info(struct iwl_priv *priv) | |||
3141 | #define IWL_TX_DELIMITER_SIZE 4 | 3141 | #define IWL_TX_DELIMITER_SIZE 4 |
3142 | 3142 | ||
3143 | /** | 3143 | /** |
3144 | * iwl4965_tx_queue_update_wr_ptr - Set up entry in Tx byte-count array | 3144 | * iwl4965_txq_update_byte_cnt_tbl - Set up entry in Tx byte-count array |
3145 | */ | 3145 | */ |
3146 | int iwl4965_tx_queue_update_wr_ptr(struct iwl_priv *priv, | 3146 | static void iwl4965_txq_update_byte_cnt_tbl(struct iwl_priv *priv, |
3147 | struct iwl4965_tx_queue *txq, u16 byte_cnt) | 3147 | struct iwl4965_tx_queue *txq, |
3148 | u16 byte_cnt) | ||
3148 | { | 3149 | { |
3149 | int len; | 3150 | int len; |
3150 | int txq_id = txq->q.id; | 3151 | int txq_id = txq->q.id; |
3151 | struct iwl4965_shared *shared_data = priv->hw_setting.shared_virt; | 3152 | struct iwl4965_shared *shared_data = priv->hw_setting.shared_virt; |
3152 | 3153 | ||
3153 | if (txq->need_update == 0) | ||
3154 | return 0; | ||
3155 | |||
3156 | len = byte_cnt + IWL_TX_CRC_SIZE + IWL_TX_DELIMITER_SIZE; | 3154 | len = byte_cnt + IWL_TX_CRC_SIZE + IWL_TX_DELIMITER_SIZE; |
3157 | 3155 | ||
3158 | /* Set up byte count within first 256 entries */ | 3156 | /* Set up byte count within first 256 entries */ |
@@ -3164,8 +3162,6 @@ int iwl4965_tx_queue_update_wr_ptr(struct iwl_priv *priv, | |||
3164 | IWL_SET_BITS16(shared_data->queues_byte_cnt_tbls[txq_id]. | 3162 | IWL_SET_BITS16(shared_data->queues_byte_cnt_tbls[txq_id]. |
3165 | tfd_offset[IWL4965_QUEUE_SIZE + txq->q.write_ptr], | 3163 | tfd_offset[IWL4965_QUEUE_SIZE + txq->q.write_ptr], |
3166 | byte_cnt, len); | 3164 | byte_cnt, len); |
3167 | |||
3168 | return 0; | ||
3169 | } | 3165 | } |
3170 | 3166 | ||
3171 | /** | 3167 | /** |
@@ -4934,6 +4930,7 @@ static struct iwl_hcmd_utils_ops iwl4965_hcmd_utils = { | |||
4934 | 4930 | ||
4935 | static struct iwl_lib_ops iwl4965_lib = { | 4931 | static struct iwl_lib_ops iwl4965_lib = { |
4936 | .init_drv = iwl4965_init_drv, | 4932 | .init_drv = iwl4965_init_drv, |
4933 | .txq_update_byte_cnt_tbl = iwl4965_txq_update_byte_cnt_tbl, | ||
4937 | .hw_nic_init = iwl4965_hw_nic_init, | 4934 | .hw_nic_init = iwl4965_hw_nic_init, |
4938 | .is_valid_rtc_data_addr = iwl4965_hw_valid_rtc_data_addr, | 4935 | .is_valid_rtc_data_addr = iwl4965_hw_valid_rtc_data_addr, |
4939 | .alive_notify = iwl4965_alive_notify, | 4936 | .alive_notify = iwl4965_alive_notify, |