]> git.baikalelectronics.ru Git - kernel.git/commit
ath9k: clean up / fix aggregation session flush
authorFelix Fietkau <nbd@openwrt.org>
Mon, 20 Sep 2010 11:45:38 +0000 (13:45 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 21 Sep 2010 15:05:33 +0000 (11:05 -0400)
commit376f7ee36a6ca32ec7d73187fa910ca0159aa251
tree8d8bb5a53f2316cd36f8b4c709e7db8eafe3db89
parent800a1f0f029650b7e6f0ac23a7e9ffccbc9f3b32
ath9k: clean up / fix aggregation session flush

The tid aggregation cleanup is a bit fragile, as it discards failed
subframes in some places, and retransmits them in others. This could
block the cleanup of an existing aggregation session, if a retransmission
for a tid is issued, yet the tid is never scheduled again because of
the cleanup state.

Fix this by getting rid of as many subframes as possible, as early
as possible, and immediately transmitting pending subframes as regular
HT frames instead of waiting for the cleanup to complete.

Drop all pending subframes while keeping track of the Block ACK window
during aggregate tx completion to prevent sending out stale subframes,
which could confuse the receiver side.

Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Cc: stable@kernel.org
Signed-off-by: John W. Linville <linville@tuxdriver.com>
drivers/net/wireless/ath/ath9k/xmit.c