1
linux/drivers/net/wireless/rt2x00
Helmut Schaa b34793ee27 rt2x00: Work around hw aggregation oddity in rt2800
If a frame is not meant to be sent as AMPDU or part of it the hw might
still decide to aggregate this frame if a previous frame started an
AMPDU. However, this will limit the usefulness of the reported tx rate
since the reported rate will be the one specified in the TXWI of the
first frame and thus it is not possible to reliably caculate the
number of retrys by substracting the reported tx rate from the tx rate
in the TXWI.

To fix this issue, only report the successful rate for frames that were
not meant to be aggregated but ended up in an aggregate.

Example:
Frame A (MCS7, AMPDU=1) B (MCS7, AMPDU=1) C (MCS12, AMDPU=0, PROBE_RATE)

Although frame C shoudn't be aggregated the hw might sill put it
into an AMPDU together with A and B. If the transmission succeeds the tx
status will contain MCS7 for all three frames. In that case we should
only report MCS7 as success rate and avoid reporting MCS12-MCS8 as
failed tx attempts as this will affect the future rate control
decisions.

This oddity might strike us in other scenarious as well but the most
common "wrong" report happened for frames used to probe a different tx
rate.

This improves the rate control decisions notable.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
2010-10-05 13:35:29 -04:00
..
Kconfig
Makefile
rt2x00.h rt2x00: Implement HT protection for rt2800 2010-10-05 13:35:26 -04:00
rt2x00config.c rt2x00: Implement HT protection for rt2800 2010-10-05 13:35:26 -04:00
rt2x00crypto.c
rt2x00debug.c rt2x00: Split watchdog check into a DMA and STATUS timeout 2010-08-31 14:22:25 -04:00
rt2x00debug.h
rt2x00dev.c rt2x00: Fix oops caused by error path in rt2x00lib_start 2010-10-05 13:35:29 -04:00
rt2x00dump.h
rt2x00firmware.c
rt2x00ht.c rt2x00: Improve cooperation between rt2800pci and minstrel 2010-10-05 13:35:29 -04:00
rt2x00leds.c
rt2x00leds.h
rt2x00lib.h rt2x00: Check for specific changed flags when updating the erp config 2010-09-14 16:03:43 -04:00
rt2x00link.c rt2x00: Antenna diversity does not work in 2.6.35 2010-09-14 16:03:43 -04:00
rt2x00mac.c rt2x00: Implement HT protection for rt2800 2010-10-05 13:35:26 -04:00
rt2x00pci.c
rt2x00pci.h
rt2x00queue.c rt2x00: Split watchdog check into a DMA and STATUS timeout 2010-08-31 14:22:25 -04:00
rt2x00queue.h rt2x00: Split watchdog check into a DMA and STATUS timeout 2010-08-31 14:22:25 -04:00
rt2x00reg.h
rt2x00soc.c
rt2x00soc.h
rt2x00usb.c rt2x00: Cleanup rt2x00usb_watchdog_reset_tx 2010-08-31 14:22:25 -04:00
rt2x00usb.h rt2x00: Simplify arguments to rt2x00 driver callback functions 2010-08-25 14:34:54 -04:00
rt61pci.c rt2x00: correctly set max_report_rates in rt61pci and rt2800 2010-10-05 13:35:28 -04:00
rt61pci.h
rt73usb.c rt2x00: Don't enable broad- and multicast buffering on USB devices 2010-10-05 13:35:27 -04:00
rt73usb.h
rt2400pci.c rt2x00: Check for specific changed flags when updating the erp config 2010-09-14 16:03:43 -04:00
rt2400pci.h
rt2500pci.c rt2x00: Check for specific changed flags when updating the erp config 2010-09-14 16:03:43 -04:00
rt2500pci.h
rt2500usb.c rt2x00: Don't enable broad- and multicast buffering on USB devices 2010-10-05 13:35:27 -04:00
rt2500usb.h
rt2800.h rt2x00: Update comment about the AMPDU flag in the TXWI 2010-10-05 13:35:28 -04:00
rt2800lib.c rt2x00: Work around hw aggregation oddity in rt2800 2010-10-05 13:35:29 -04:00
rt2800lib.h rt2x00: Split out parts of the rt2800_txdone function for easier reuse 2010-10-05 13:35:26 -04:00
rt2800pci.c rt2x00: Fix race between dma mapping and clearing rx entries in rt2800pci 2010-10-05 13:35:27 -04:00
rt2800pci.h
rt2800usb.c rt2x00: Correctly kill beacon queue 2010-08-31 14:22:24 -04:00
rt2800usb.h