Skip to content

Commit

Permalink
ath5k: fix regression in tx status processing
Browse files Browse the repository at this point in the history
The regression was introduced in the following commit:

0967e01
"ath5k: make use of the new rate control API"

ath5k_tx_frame_completed saves the intended per-rate retry counts before
they are cleared by ieee80211_tx_info_clear_status, however at this
point the information in info->status.rates is incomplete.

This causes significant throughput degradation and excessive packet loss
on links where high bit rates don't work properly.

Move the copy from bf->rates a few lines up to ensure that the saved
retry counts are updated, and that they are really cleared in
info->status.rates after the call to ieee80211_tx_info_clear_status.

Cc: [email protected] # 3.10+
Cc: Thomas Huehn <[email protected]>
Cc: Benjamin Vahl <[email protected]>
Reported-by: Ben West <[email protected]>
Signed-off-by: Felix Fietkau <[email protected]>
Acked-by: Thomas Huehn <[email protected]>
Signed-off-by: John W. Linville <[email protected]>
  • Loading branch information
Felix Fietkau authored and linvjw committed Oct 18, 2013
1 parent 334300f commit 7ede612
Showing 1 changed file with 3 additions and 3 deletions.
6 changes: 3 additions & 3 deletions drivers/net/wireless/ath/ath5k/base.c
Original file line number Diff line number Diff line change
Expand Up @@ -1663,15 +1663,15 @@ ath5k_tx_frame_completed(struct ath5k_hw *ah, struct sk_buff *skb,
ah->stats.tx_bytes_count += skb->len;
info = IEEE80211_SKB_CB(skb);

size = min_t(int, sizeof(info->status.rates), sizeof(bf->rates));
memcpy(info->status.rates, bf->rates, size);

tries[0] = info->status.rates[0].count;
tries[1] = info->status.rates[1].count;
tries[2] = info->status.rates[2].count;

ieee80211_tx_info_clear_status(info);

size = min_t(int, sizeof(info->status.rates), sizeof(bf->rates));
memcpy(info->status.rates, bf->rates, size);

for (i = 0; i < ts->ts_final_idx; i++) {
struct ieee80211_tx_rate *r =
&info->status.rates[i];
Expand Down

0 comments on commit 7ede612

Please sign in to comment.