]> git.baikalelectronics.ru Git - kernel.git/commit
ath9k: fix queue stop/start based on the number of pending frames
authorFelix Fietkau <nbd@openwrt.org>
Tue, 1 Jun 2010 19:33:13 +0000 (21:33 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Thu, 3 Jun 2010 18:14:41 +0000 (14:14 -0400)
commit8097f431dfdfc6f7e35c45e6646c7dd6573bdcd8
treec478140600fc9f0406c3911ce1421ffa3681a4f5
parent4a3b23510993e1261fe85380e65a179260109901
ath9k: fix queue stop/start based on the number of pending frames

Because there is a limited number of tx buffers available, once the
queue has been filled to a certain point, ath9k needs to stop accepting
new frames from mac80211. In order to prevent a full WMM queue from
stopping another queue with fewer frames, this patch limits the number
of queued frames to a quarter of the total available tx buffers, minus
some reserved frames to be used for other purposes (e.g. beacons).

Because tx buffers are reserved for frames when they're staged in
software queues as well, the actual queue depth cannot be used for
this, so this patch stores a reference to the tx queue in the ath_buf
struct and keeps track of the total number of pending frames.

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