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)
commit84642d6bdde9164b7905fba03c0691a806788e0c
treec478140600fc9f0406c3911ce1421ffa3681a4f5
parent764580f577a46adce6ad6717a9b34aa8e3a09159
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