]> rtime.felk.cvut.cz Git - lisovros/linux_canprio.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)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 9 Dec 2010 21:31:58 +0000 (13:31 -0800)
commit076fb1daa4e37ac939985aeda6eacd73fc25fd65
tree3e0adf28659aa6c53f7be83e50463c4418dd8435
parent740bf61128cf4c4beed3c8469eb3e21bf8bdf82a
ath9k: clean up / fix aggregation session flush

commit 90fa539ca3f07323da5a90f5c8f4e5cd952875e7 upstream.

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>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/net/wireless/ath/ath9k/xmit.c