rt2x00: Fix tx status reporting for reordered frames in rt2800pci
authorHelmut Schaa <helmut.schaa@googlemail.com>
Fri, 15 Mar 2013 08:57:57 +0000 (09:57 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 18 Mar 2013 20:38:29 +0000 (16:38 -0400)
commit8857d6dc77e4e3afeee2f33c49597010130ed858
tree578ceaaf88ea7ad9e439f48564f22a5eec16f7f8
parent1dd0dbb30eb8e5d3e855bc864e54b745d1b96fd6
rt2x00: Fix tx status reporting for reordered frames in rt2800pci

rt2800 hardware sometimes reorders tx frames when transmitting to
multiple BA enabled STAs concurrently.

For example a tx queue
[ STA1 | STA2 | STA1 | STA2 ]
can result in the tx status reports
[ STA1 | STA1 | STA2 | STA2 ]
when the hw decides to put the frames for STA1 in one AMPDU.

To mitigate this effect associate the currently processed tx status
to the first frame in the tx queue with a matching wcid.

This patch fixes several problems related to incorrect tx status
reporting. Furthermore the tx rate selection is much more stable when
communicating with multiple STAs.

Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/rt2x00/rt2800pci.c
drivers/net/wireless/rt2x00/rt2x00queue.h