OpenCloudOS-Kernel/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 rt2x00: Enable RT30xx by default. 2010-05-04 13:24:23 -04:00
Makefile rt2800: add rt2800lib (part one) 2009-11-06 16:48:58 -05:00
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 mac80211: use cipher suite selectors 2010-08-16 16:45:11 -04:00
rt2x00debug.c rt2x00: Split watchdog check into a DMA and STATUS timeout 2010-08-31 14:22:25 -04:00
rt2x00debug.h rt2x00: Update copyright statements. 2009-11-11 17:09:17 -05:00
rt2x00dev.c rt2x00: Fix oops caused by error path in rt2x00lib_start 2010-10-05 13:35:29 -04:00
rt2x00dump.h rt2x00: correct sparse warning in rt2x00debug.c 2010-07-20 16:49:41 -04:00
rt2x00firmware.c rt2x00: update fw version info in wiphy struct 2010-08-16 14:39:45 -04:00
rt2x00ht.c rt2x00: Improve cooperation between rt2800pci and minstrel 2010-10-05 13:35:29 -04:00
rt2x00leds.c rt2x00: Update copyright statements. 2009-11-11 17:09:17 -05:00
rt2x00leds.h rt2x00: Update copyright statements. 2009-11-11 17:09:17 -05:00
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 rt2x00: do not use PCI resources before pci_enable_device() 2010-08-04 15:28:37 -04:00
rt2x00pci.h rt2x00: Move common txdone handling to rt2x00lib_txdone. 2010-06-30 15:00:50 -04:00
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 rt2x00: Add missing TSF sync mode for AP operation 2010-07-12 16:05:37 -04:00
rt2x00soc.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
rt2x00soc.h rt2x00: remove KSEG1ADDR define from rt2x00soc.h 2010-03-10 16:16:53 -05:00
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 drivers/net: use __packed annotation 2010-06-03 03:18:23 -07:00
rt73usb.c rt2x00: Don't enable broad- and multicast buffering on USB devices 2010-10-05 13:35:27 -04:00
rt73usb.h drivers/net: use __packed annotation 2010-06-03 03:18:23 -07:00
rt2400pci.c rt2x00: Check for specific changed flags when updating the erp config 2010-09-14 16:03:43 -04:00
rt2400pci.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2010-02-25 23:26:21 -08:00
rt2500pci.c rt2x00: Check for specific changed flags when updating the erp config 2010-09-14 16:03:43 -04:00
rt2500pci.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 2010-02-25 23:26:21 -08:00
rt2500usb.c rt2x00: Don't enable broad- and multicast buffering on USB devices 2010-10-05 13:35:27 -04:00
rt2500usb.h Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2009-12-09 19:43:33 -08:00
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 rt2x00: Move all register definitions for rt2800 to rt2800.h. 2010-06-03 10:51:59 +02:00
rt2800usb.c rt2x00: Correctly kill beacon queue 2010-08-31 14:22:24 -04:00
rt2800usb.h rt2x00: Move all register definitions for rt2800 to rt2800.h. 2010-06-03 10:51:59 +02:00