summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/ath9k/ath9k.h
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-07-16 20:26:05 +0200
committerJohn W. Linville <linville@tuxdriver.com>2014-07-18 13:45:25 -0400
commitd954cd770051cde27a9da8f2627acd5bc709ffbb (patch)
treeed4e510b4b8205c45c7b28c4be690b3064b41000 /drivers/net/wireless/ath/ath9k/ath9k.h
parentd1d3799fcb1037357b54be44e796a6253484268e (diff)
downloadop-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.h3
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;
OpenPOWER on IntegriCloud