linux/drivers/net/wireless/rt2x00
Helmut Schaa 84e9e8ebd3 rt2x00: Improve TX status handling for BlockAckReq frames
Since rt2800 hardware isn't capable of reporting the TX status of
BlockAckReq frames implement the TX status handling of BARs in
rt2x00lib. We keep track of all BARs that are send out and try to
match incoming BAs to the appropriate BARs. This allows us to report a
more or less accurate TX status for BAR frames which in turn improves
BA session stability.

This is loosley based on Christian Lamparter's patch for carl9170
"carl9170: fix HT peer BA session corruption".

We have to walk the list of pending BARs for every rx'red BA even
though most BAs don't belong to any of these BARs as they are just
acknowledging an AMPDU. To keep that overhead low use RCU which allows
us to walk the list of pending BARs without the need to acquire a lock.
This however requires us to _copy_ relevant information from the BAR
(RA, TA, control field, start sequence number) into our BAR list entry.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Tested-by: Andreas Hartmann <andihartmann@01019freenet.de>
Acked-by: Gertjan van Wingerde <gwingerde@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2013-01-22 16:01:29 -05:00
..
Kconfig rt2x00 : RT3290 chip support v4 2012-06-20 14:41:49 -04:00
Makefile
rt2x00.h rt2x00: Improve TX status handling for BlockAckReq frames 2013-01-22 16:01:29 -05:00
rt2x00config.c mac80211: add time synchronisation with BSS for assoc 2012-07-12 12:10:46 +02:00
rt2x00crypto.c rt2x00: Don't use queue entry as parameter when creating TX descriptor. 2011-07-07 13:20:58 -04:00
rt2x00debug.c rt2x00: Add debugfs access for rfcsr register 2012-05-08 21:53:46 -04:00
rt2x00debug.h rt2x00: Add debugfs access for rfcsr register 2012-05-08 21:53:46 -04:00
rt2x00dev.c rt2x00: Improve TX status handling for BlockAckReq frames 2013-01-22 16:01:29 -05: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: Use GFP_KERNEL for rx buffer allocation on USB devices 2012-04-23 15:35:29 -04:00
rt2x00link.c rt2x00:Add VCO recalibration 2012-02-27 14:05:44 -05:00
rt2x00mac.c mac80211: clarify interface iteration and make it configurable 2012-11-09 17:34:35 +01:00
rt2x00pci.c rt2x00 : RT3290 chip support v4 2012-06-20 14:41:49 -04:00
rt2x00pci.h
rt2x00queue.c rt2x00: Improve TX status handling for BlockAckReq frames 2013-01-22 16:01:29 -05:00
rt2x00queue.h rt2x00: remove unused argument 2012-07-11 15:38:27 -04:00
rt2x00reg.h
rt2x00soc.c
rt2x00soc.h
rt2x00usb.c rt2x00: remove unused argument 2012-07-11 15:38:27 -04:00
rt2x00usb.h
rt61pci.c rt2x00: remove __dev* attributes 2012-12-06 15:04:58 -05:00
rt61pci.h rt2x00: Unify GPIO register field namings 2012-09-07 15:08:40 -04:00
rt73usb.c rt2x00: usb: fix reset resume 2012-10-24 13:18:07 -04:00
rt73usb.h rt2x00: Unify GPIO register field namings 2012-09-07 15:08:40 -04:00
rt2400pci.c rt2x00: remove __dev* attributes 2012-12-06 15:04:58 -05:00
rt2400pci.h rt2x00: Unify GPIO register field namings 2012-09-07 15:08:40 -04:00
rt2500pci.c rt2x00: remove __dev* attributes 2012-12-06 15:04:58 -05:00
rt2500pci.h rt2x00: Unify GPIO register field namings 2012-09-07 15:08:40 -04:00
rt2500usb.c rt2x00: usb: fix reset resume 2012-10-24 13:18:07 -04:00
rt2500usb.h rt2x00: Unify GPIO register field namings 2012-09-07 15:08:40 -04:00
rt2800.h rt2x00: rt2800lib: introduce RFCSR3_VCOCAL_EN 2012-12-03 13:52:01 -05:00
rt2800lib.c rt2x00: Improve TX status handling for BlockAckReq frames 2013-01-22 16:01:29 -05:00
rt2800lib.h rt2x00: rt2800: convert read_eeprom functions to return an int value 2013-01-07 15:16:54 -05:00
rt2800pci.c rt2x00: rt2800: convert read_eeprom functions to return an int value 2013-01-07 15:16:54 -05:00
rt2800pci.h rt2x00 : RT3290 chip support v4 2012-06-20 14:41:49 -04:00
rt2800usb.c rt2x00: rt2800: convert read_eeprom functions to return an int value 2013-01-07 15:16:54 -05:00
rt2800usb.h