diff options
author | Felix Fietkau <nbd@openwrt.org> | 2014-07-16 20:26:05 +0200 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-07-18 13:45:25 -0400 |
commit | d954cd770051cde27a9da8f2627acd5bc709ffbb (patch) | |
tree | ed4e510b4b8205c45c7b28c4be690b3064b41000 /drivers/net/wireless/ath/ath9k/ath9k.h | |
parent | d1d3799fcb1037357b54be44e796a6253484268e (diff) | |
download | op-kernel-dev-d954cd770051cde27a9da8f2627acd5bc709ffbb.zip op-kernel-dev-d954cd770051cde27a9da8f2627acd5bc709ffbb.tar.gz |
ath9k: fix pending tx frames accounting
Packets originally buffered for the regular hardware tx queues can end
up being transmitted through the U-APSD queue (via PS-Poll or U-APSD).
When packets are dropped due to retransmit failures, the pending frames
counter is not always updated properly.
Fix this by keeping track of the queue that a frame was accounted for in
the ath_frame_info struct, and using that on completion to decide
whether the counter should be updated.
This fixes some spurious transmit queue hangs.
Cc: stable@vger.kernel.org
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/ath9k.h')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/ath9k.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/ath9k/ath9k.h b/drivers/net/wireless/ath/ath9k/ath9k.h index 11b5e4d..7fc13a8 100644 --- a/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h @@ -182,7 +182,8 @@ struct ath_atx_ac { struct ath_frame_info { struct ath_buf *bf; - int framelen; + u16 framelen; + s8 txq; enum ath9k_key_type keytype; u8 keyix; u8 rtscts_rate; |