linux/drivers/net/wireless/ath/ath5k
Felix Fietkau 7ede612fd6 ath5k: fix regression in tx status processing
The regression was introduced in the following commit:

0967e01e8e
"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: stable@vger.kernel.org # 3.10+
Cc: Thomas Huehn <thomas@net.t-labs.tu-berlin.de>
Cc: Benjamin Vahl <bvahl@net.t-labs.tu-berlin.de>
Reported-by: Ben West <ben@gowasabi.net>
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Acked-by: Thomas Huehn <thomas@net.t-labs.tu-berlin.de>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-10-18 13:41:11 -04:00
..
ahb.c net: wireless: remove unnecessary platform_set_drvdata() 2013-05-27 22:34:52 -07:00
ani.c ath: Add and use pr_fmt, convert printks to pr_<level> 2012-04-10 14:52:13 -04:00
ani.h ath5k: Cleanups v2 + add kerneldoc on all hw functions 2011-11-28 14:44:16 -05:00
ath5k.h ath5k: enable support for 5 MHz and 10 MHz channels 2013-08-16 14:17:50 -04:00
attach.c ath: Add and use pr_fmt, convert printks to pr_<level> 2012-04-10 14:52:13 -04:00
base.c ath5k: fix regression in tx status processing 2013-10-18 13:41:11 -04:00
base.h ath5k: enable support for 5 MHz and 10 MHz channels 2013-08-16 14:17:50 -04:00
caps.c ath5k: MRR support and 2GHz radio override belong in ah_capabilities 2011-11-28 14:44:19 -05:00
debug.c ath5k: debugfs: NULL-terminate strings 2013-08-26 14:09:06 -04:00
debug.h treewide: use __printf not __attribute__((format(printf,...))) 2011-10-31 17:30:54 -07:00
desc.c ath5k: Remove extraneous statements from ath5k_hw_proc_4word_tx_status and ath5k_hw_proc_2word_status. 2012-04-11 16:23:58 -04:00
desc.h ath5k: Cleanups v2 + add kerneldoc on all hw functions 2011-11-28 14:44:16 -05:00
dma.c ath: Add and use pr_fmt, convert printks to pr_<level> 2012-04-10 14:52:13 -04:00
eeprom.c ath5k: cleanup channel to eprom_mode function 2013-03-06 16:24:27 -05:00
eeprom.h ath5k: cleanup channel to eprom_mode function 2013-03-06 16:24:27 -05:00
gpio.c ath5k: Cleanups v2 + add kerneldoc on all hw functions 2011-11-28 14:44:16 -05:00
initvals.c ath: Add and use pr_fmt, convert printks to pr_<level> 2012-04-10 14:52:13 -04:00
Kconfig wireless: allow Atheros card to not depend on ath.ko 2012-11-30 13:38:16 -05:00
led.c ath5k: remove __dev* attributes 2012-12-06 15:04:56 -05:00
mac80211-ops.c ath5k: enable support for 5 MHz and 10 MHz channels 2013-08-16 14:17:50 -04:00
Makefile ath5k: use more idiomatic tracing include style 2013-04-12 15:29:14 -04:00
pci.c ath5k: remove __dev* attributes 2012-12-06 15:04:56 -05:00
pcu.c ath5k: set 5/10 MHz supported channels and fix duration 2013-08-16 14:17:49 -04:00
phy.c ath5k: cleanup channel to eprom_mode function 2013-03-06 16:24:27 -05:00
qcu.c ath5k: set 5/10 MHz supported channels and fix duration 2013-08-16 14:17:49 -04:00
reg.h ath5k: Switch from read-and-clear to write-to-clear method when handling PISR/SISR registers 2011-11-28 14:44:10 -05:00
reset.c ath5k: cleanup channel to eprom_mode function 2013-03-06 16:24:27 -05:00
rfbuffer.h ath5k: Cleanups v2 + add kerneldoc on all hw functions 2011-11-28 14:44:16 -05:00
rfgain.h ath5k: Cleanups v2 + add kerneldoc on all hw functions 2011-11-28 14:44:16 -05:00
rfkill.c ath5k: clean up base.h and its use 2011-08-08 16:04:14 -04:00
sysfs.c ath: Add and use pr_fmt, convert printks to pr_<level> 2012-04-10 14:52:13 -04:00
trace.h ath5k: use more idiomatic tracing include style 2013-04-12 15:29:14 -04:00