diff options
author | Eyal Shapira <eyal@wizery.com> | 2014-11-12 06:30:20 -0500 |
---|---|---|
committer | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2014-11-23 13:05:32 -0500 |
commit | d6bda6671f8fda961f6cce95e644f6a14fe5bd2a (patch) | |
tree | a21c442bd1cf9b66fecb9ce4d822f70a1f1c3478 /drivers | |
parent | 123f515635b12f100ba550b668203159dfb83c82 (diff) |
iwlwifi: mvm: rs: consider a missing BA as a single tx failure
The fw now indicates missing BA with ampdu_ack_len=0.
This will make the whole aggregation being marked
as failed, although it's most likely not the case (and
only the BA itself was failed).
Consider this case as a single tx failure.
Signed-off-by: Eyal Shapira <eyalx.shapira@intel.com>
Signed-off-by: Eliad Peller <eliadx.peller@intel.com>
Reviewed-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/iwlwifi/mvm/rs.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/mvm/rs.c b/drivers/net/wireless/iwlwifi/mvm/rs.c index c05f5a509a5d..30ceb67ed7a7 100644 --- a/drivers/net/wireless/iwlwifi/mvm/rs.c +++ b/drivers/net/wireless/iwlwifi/mvm/rs.c | |||
@@ -1204,6 +1204,13 @@ void iwl_mvm_rs_tx_status(struct iwl_mvm *mvm, struct ieee80211_sta *sta, | |||
1204 | * first index into rate scale table. | 1204 | * first index into rate scale table. |
1205 | */ | 1205 | */ |
1206 | if (info->flags & IEEE80211_TX_STAT_AMPDU) { | 1206 | if (info->flags & IEEE80211_TX_STAT_AMPDU) { |
1207 | /* ampdu_ack_len = 0 marks no BA was received. In this case | ||
1208 | * treat it as a single frame loss as we don't want the success | ||
1209 | * ratio to dip too quickly because a BA wasn't received | ||
1210 | */ | ||
1211 | if (info->status.ampdu_ack_len == 0) | ||
1212 | info->status.ampdu_len = 1; | ||
1213 | |||
1207 | ucode_rate = le32_to_cpu(table->rs_table[0]); | 1214 | ucode_rate = le32_to_cpu(table->rs_table[0]); |
1208 | rs_rate_from_ucode_rate(ucode_rate, info->band, &rate); | 1215 | rs_rate_from_ucode_rate(ucode_rate, info->band, &rate); |
1209 | rs_collect_tx_data(lq_sta, curr_tbl, rate.index, | 1216 | rs_collect_tx_data(lq_sta, curr_tbl, rate.index, |