]> git.baikalelectronics.ru Git - kernel.git/commit
ath9k: Test for TID only in BlockAcks while checking tx status
authorSven Eckelmann <sven@narfation.org>
Mon, 29 Oct 2012 12:25:20 +0000 (13:25 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 30 Oct 2012 19:58:54 +0000 (15:58 -0400)
commit599dd11e830ec4d5e570063a78a700d698ccd099
tree8d5830aaa80aeefcfc079f21ca0d7368c1b5ab7a
parentac797a9d1531e83991a5365e00c3f2e78ad25e9b
ath9k: Test for TID only in BlockAcks while checking tx status

The ath9k xmit functions for AMPDUs can send frames as non-aggregate in case
only one frame is currently available. The client will then answer using a
normal Ack instead of a BlockAck. This acknowledgement has no TID stored and
therefore the hardware is not able to provide us the corresponding TID.

The TID set by the hardware in the tx status descriptor has to be seen as
undefined and not as a valid TID value for normal acknowledgements. Doing
otherwise results in a massive amount of retransmissions and stalls of
connections.

Users may experience low bandwidth and complete connection stalls in
environments with transfers using multiple TIDs.

This regression was introduced in ca21b6581ec08a828970908ef2a09316c8df2243
("ath9k: validate the TID in the tx status information").

Signed-off-by: Sven Eckelmann <sven@narfation.org>
Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
Cc: stable@vger.kernel.org
Acked-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/xmit.c