linux/drivers/net/wireless/ath/ath9k
Björn Smedman ebd022873a ath9k: A-MPDU rate control info fix
This patch fixes the following problems with the rate control feedback
generated by ath9k for A-MPDU frames:

1. Rate control feedback is carried on the first frame of an aggregate
that is either ACKed, or has execeeded the software retry count and is
considered failed. However, ath9k would incorrectly assume the aggregate
had the length 1 if one of these conditions did not apply to the first
frame of the aggregate, but instead a later frame. This fix therefor
copies the bf_nframes field of the buffer in the same manner as the rates
field of the tx status.

2. Sometimes the ampdu_len and ampdu_ack_len fields of the tx status was
left uninitialized eventhough the IEEE80211_TX_STAT_AMPDU flag was set.
This is now avoid by setting flag and fields in the same place.

3. Even if a frame has been selected for aggregation by mac80211 and
marked with the IEEE80211_TX_CTL_AMPDU flag it can sometimes happen that
ath9k transmits the frame without aggregation. In these cases the
ampdu_ack_len field could be incorrectly computed because the nbad
parameter to ath_tx_rc_status was incorrect.

Cc: <stable@kernel.org>
Signed-off-by: Björn Smedman <bjorn.smedman@venatech.se>
Acked-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-10-11 15:04:24 -04:00
..
ahb.c
ani.c ath9k_hw: move the cycle counter tracking to ath 2010-10-11 15:04:20 -04:00
ani.h ath9k_hw: move the cycle counter tracking to ath 2010-10-11 15:04:20 -04:00
ar5008_initvals.h
ar5008_phy.c ath9k_hw: clean up ANI state handling 2010-10-06 16:30:39 -04:00
ar9001_initvals.h
ar9002_calib.c ath9k_hw: clean up register write buffering 2010-10-06 16:30:38 -04:00
ar9002_hw.c ath9k_hw: merge ath9k_hw_ani_monitor_old and ath9k_hw_ani_monitor_new 2010-10-06 16:30:39 -04:00
ar9002_initvals.h
ar9002_mac.c
ar9002_phy.c ath9k_hw: clean up register write buffering 2010-10-06 16:30:38 -04:00
ar9002_phy.h
ar9003_2p0_initvals.h
ar9003_2p2_initvals.h
ar9003_calib.c ath9k_hw: clean up calibration flags 2010-10-06 16:26:01 -04:00
ar9003_eeprom.c Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6 2010-09-24 15:52:34 -04:00
ar9003_eeprom.h
ar9003_hw.c ath9k_hw: merge ath9k_hw_ani_monitor_old and ath9k_hw_ani_monitor_new 2010-10-06 16:30:39 -04:00
ar9003_mac.c ath9k_hw: handle rx key miss 2010-09-14 16:14:27 -04:00
ar9003_mac.h
ar9003_paprd.c
ar9003_phy.c ath9k_hw: move the cycle counter tracking to ath 2010-10-11 15:04:20 -04:00
ar9003_phy.h
ath9k.h ath9k: implement channel utilization stats for survey 2010-10-11 15:04:21 -04:00
beacon.c
btcoex.c
btcoex.h
calib.c ath9k_hw: clean up register write buffering 2010-10-06 16:30:38 -04:00
calib.h ath9k_hw: clean up calibration flags 2010-10-06 16:26:01 -04:00
common.c ath9k: Use common ath key management functions 2010-09-16 15:22:10 -04:00
common.h ath9k: Use common ath key management functions 2010-09-16 15:22:10 -04:00
debug.c ath9k: Report total tx/rx bytes and packets in debugfs. 2010-10-05 13:35:25 -04:00
debug.h ath9k: Report total tx/rx bytes and packets in debugfs. 2010-10-05 13:35:25 -04:00
eeprom.c
eeprom.h ath9k_hw: simplify revision checks for AR9287 2010-09-27 15:57:42 -04:00
eeprom_4k.c ath9k_hw: clean up register write buffering 2010-10-06 16:30:38 -04:00
eeprom_9287.c ath9k_hw: simplify revision checks for AR9280 2010-09-27 15:57:39 -04:00
eeprom_def.c ath9k_hw: simplify revision checks for AR9280 2010-09-27 15:57:39 -04:00
gpio.c
hif_usb.c ath9k_htc: Fix register read through bulk pipe 2010-09-16 15:46:08 -04:00
hif_usb.h
htc.h
htc_drv_beacon.c ath9k_htc: Fix beacon distribution in IBSS mode 2010-09-24 15:54:32 -04:00
htc_drv_gpio.c
htc_drv_init.c ath9k_hw: clean up register write buffering 2010-10-06 16:30:38 -04:00
htc_drv_main.c ath9k_htc: remove use of common->ani.noise_floor 2010-10-05 13:35:21 -04:00
htc_drv_txrx.c ath9k_hw: remove useless hw capability flags 2010-09-14 16:14:27 -04:00
htc_hst.c
htc_hst.h
hw-ops.h ath9k_hw: merge ath9k_hw_ani_monitor_old and ath9k_hw_ani_monitor_new 2010-10-06 16:30:39 -04:00
hw.c ath9k_hw: store the clock rate in common data on channel changes 2010-10-11 15:04:19 -04:00
hw.h ath9k: add compile time checking for the size of the channel list 2010-10-11 15:04:21 -04:00
init.c ath9k: add compile time checking for the size of the channel list 2010-10-11 15:04:21 -04:00
Kconfig ath9k: make the driver specific rate control module optional 2010-09-21 11:05:35 -04:00
mac.c ath9k_hw: Fix hw reset failure with HTC driver 2010-10-07 14:41:28 -04:00
mac.h ath9k: Use common ath key management functions 2010-09-16 15:22:10 -04:00
main.c ath9k: implement channel utilization stats for survey 2010-10-11 15:04:21 -04:00
Makefile ath9k: make the driver specific rate control module optional 2010-09-21 11:05:35 -04:00
pci.c
phy.h ath9k: Use common ath key management functions 2010-09-16 15:22:10 -04:00
rc.c ath9k: move ath_tx_aggr_check() to the rate control module 2010-09-21 11:05:34 -04:00
rc.h ath9k: make the driver specific rate control module optional 2010-09-21 11:05:35 -04:00
recv.c mac80211/ath9k: Support AMPDU with multiple VIFs. 2010-09-27 15:57:45 -04:00
reg.h ath9k_hw: move the cycle counter tracking to ath 2010-10-11 15:04:20 -04:00
virtual.c ath9k: fix BSSID mask calculation 2010-09-14 16:14:26 -04:00
wmi.c ath9k_htc: Fix memory leak on WMI event handler 2010-09-14 16:14:26 -04:00
wmi.h ath9k_htc: Fix memory leak on WMI event handler 2010-09-14 16:14:26 -04:00
xmit.c ath9k: A-MPDU rate control info fix 2010-10-11 15:04:24 -04:00