linux-hardened/drivers/net/wireless/rt2x00
Andreas Hartmann be03d4a45c rt2x00: Don't let mac80211 send a BAR when an AMPDU subframe fails
There are connection stalls or very poor throughputs with rt2800
hardware using 802.11n in AP mode since patch "mac80211: retry sending
failed BAR frames later instead of tearing down aggr"[1][2].

Since rt2800 hardware is not able to correctly report the tx status of
BAR frames, this patch removes as workaround the existing error handling
on AP side, which lets mac80211 send a BAR when an AMPDU subframe fails.

As a result, most wifi clients (aside from Intel STAs on Windows)
instead will timeout now the reorder buffer and request the lost frame
again.

The correct solution would be, to tear down BA session on AP side.

This patch was born on the basis of "[RFT] rt2x00: Tear down BA
session on QoS frame failure"[3].

Thanks to Helmut Schaa for his support!

[1] http://thread.gmane.org/gmane.linux.kernel.wireless.general/83297/focus=83304
[2] http://git.kernel.org/?p=linux/kernel/git/linville/wireless-testing.git;a=commit;h=f0425beda4d404a6e751439b562100b902ba9c98
[3] http://thread.gmane.org/gmane.linux.drivers.rt2x00.user/569

Signed-off-by: Andreas Hartmann <andihartmann@01019freenet.de>
Acked-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2012-04-17 14:57:13 -04:00
..
Kconfig rt2x00:Fix typo 2012-02-22 14:47:37 -05:00
Makefile
rt2x00.h rt2x00: do not generate seqno in h/w if QOS is disabled 2012-04-11 16:24:01 -04:00
rt2x00config.c rt2x00: configure different txdesc parameters for non HT channel 2012-04-11 16:23:44 -04:00
rt2x00crypto.c
rt2x00debug.c
rt2x00debug.h
rt2x00dev.c rt2x00: Don't let mac80211 send a BAR when an AMPDU subframe fails 2012-04-17 14:57:13 -04:00
rt2x00dump.h
rt2x00firmware.c
rt2x00leds.c rt2x00: increase led's name buffer length 2012-04-09 16:09:34 -04:00
rt2x00leds.h
rt2x00lib.h rt2x00:Add VCO recalibration 2012-02-27 14:05:44 -05:00
rt2x00link.c rt2x00:Add VCO recalibration 2012-02-27 14:05:44 -05:00
rt2x00mac.c rt2x00: do not generate seqno in h/w if QOS is disabled 2012-04-11 16:24:01 -04:00
rt2x00pci.c
rt2x00pci.h
rt2x00queue.c rt2x00: do not generate seqno in h/w if QOS is disabled 2012-04-11 16:24:01 -04:00
rt2x00queue.h rt2x00: rt2800usb: rework txstatus code 2012-03-15 13:40:31 -04:00
rt2x00reg.h
rt2x00soc.c
rt2x00soc.h
rt2x00usb.c rt2x00: rt2800usb: rework txstatus code 2012-03-15 13:40:31 -04:00
rt2x00usb.h
rt61pci.c net/wireless: use module_pci_driver 2012-04-16 14:38:50 -04:00
rt61pci.h
rt73usb.c wireless: rt2x00: rt{2500,73}usb.c put back duplicate id 2012-04-16 14:38:55 -04:00
rt73usb.h
rt2400pci.c net/wireless: use module_pci_driver 2012-04-16 14:38:50 -04:00
rt2400pci.h
rt2500pci.c net/wireless: use module_pci_driver 2012-04-16 14:38:50 -04:00
rt2500pci.h
rt2500usb.c wireless: rt2x00: rt{2500,73}usb.c put back duplicate id 2012-04-16 14:38:55 -04:00
rt2500usb.h
rt2800.h rt2x00: Fix beacon skew in rt2800pci 2012-03-12 14:21:49 -04:00
rt2800lib.c rt2800: initialize queues before giving up due to DMA error 2012-04-13 14:32:48 -04:00
rt2800lib.h rt2800: introduce wpdma_disable function 2012-04-13 14:32:47 -04:00
rt2800pci.c wireless: rt2x00: rt2800pci add more RT539x ids 2012-04-16 14:38:56 -04:00
rt2800pci.h
rt2800usb.c rt2x00: rt2800usb: fix status register reread logic 2012-03-26 15:07:28 -04:00
rt2800usb.h