mac80211: fix a powersave issue in the intermediate queueing code
authorFelix Fietkau <nbd@nbd.name>
Mon, 11 Jul 2016 13:10:58 +0000 (15:10 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 11 Jul 2016 13:46:35 +0000 (15:46 +0200)
Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/kernel/mac80211/patches/329-mac80211-fix-check-for-buffered-powersave-frames-wit.patch [new file with mode: 0644]

diff --git a/package/kernel/mac80211/patches/329-mac80211-fix-check-for-buffered-powersave-frames-wit.patch b/package/kernel/mac80211/patches/329-mac80211-fix-check-for-buffered-powersave-frames-wit.patch
new file mode 100644 (file)
index 0000000..38e541c
--- /dev/null
@@ -0,0 +1,21 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Mon, 11 Jul 2016 15:07:06 +0200
+Subject: [PATCH] mac80211: fix check for buffered powersave frames with txq
+
+The logic was inverted here, set the bit if frames are pending.
+
+Fixes: ba8c3d6f16a1 ("mac80211: add an intermediate software queue implementation")
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/net/mac80211/rx.c
++++ b/net/mac80211/rx.c
+@@ -1268,7 +1268,7 @@ static void sta_ps_start(struct sta_info
+       for (tid = 0; tid < ARRAY_SIZE(sta->sta.txq); tid++) {
+               struct txq_info *txqi = to_txq_info(sta->sta.txq[tid]);
+-              if (!txqi->tin.backlog_packets)
++              if (txqi->tin.backlog_packets)
+                       set_bit(tid, &sta->txq_buffered_tids);
+               else
+                       clear_bit(tid, &sta->txq_buffered_tids);