aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2018-09-22 15:18:46 +0200
committerFelix Fietkau <nbd@nbd.name>2018-09-22 18:43:29 +0200
commit609707cbe7cfce2038cf54a8deb6c341a06df1d8 (patch)
tree7246e612ee69587bd10b54b2fa73457fbb5fba33
parentca1d6c7d30cfdf3d4cab0f530baec9e818a31f7f (diff)
downloadupstream-609707cbe7cfce2038cf54a8deb6c341a06df1d8.tar.gz
upstream-609707cbe7cfce2038cf54a8deb6c341a06df1d8.tar.bz2
upstream-609707cbe7cfce2038cf54a8deb6c341a06df1d8.zip
mac80211: fix tx queue allocation for active monitor interfaces
Fixes a crash with drivers like ath9k Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r--package/kernel/mac80211/patches/394-mac80211-allocate-TXQs-for-active-monitor-interfaces.patch26
1 files changed, 26 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/394-mac80211-allocate-TXQs-for-active-monitor-interfaces.patch b/package/kernel/mac80211/patches/394-mac80211-allocate-TXQs-for-active-monitor-interfaces.patch
new file mode 100644
index 0000000000..c5c6586652
--- /dev/null
+++ b/package/kernel/mac80211/patches/394-mac80211-allocate-TXQs-for-active-monitor-interfaces.patch
@@ -0,0 +1,26 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Sat, 22 Sep 2018 15:05:59 +0200
+Subject: [PATCH] mac80211: allocate TXQs for active monitor interfaces
+
+Monitor mode interfaces with the active flag are passed down to the driver.
+Drivers using TXQ expect that all interfaces have allocated TXQs before
+they get added.
+
+Fixes: 79af1f866193d ("mac80211: avoid allocating TXQs that won't be used")
+Cc: stable@vger.kernel.org
+Reported-by: Catrinel Catrinescu <cc@80211.de>
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/net/mac80211/iface.c
++++ b/net/mac80211/iface.c
+@@ -1816,7 +1816,8 @@ int ieee80211_if_add(struct ieee80211_lo
+
+ if (local->ops->wake_tx_queue &&
+ type != NL80211_IFTYPE_AP_VLAN &&
+- type != NL80211_IFTYPE_MONITOR)
++ (type != NL80211_IFTYPE_MONITOR ||
++ (params->flags & MONITOR_FLAG_ACTIVE)))
+ txq_size += sizeof(struct txq_info) +
+ local->hw.txq_data_size;
+