diff options
author | Felix Fietkau <nbd@nbd.name> | 2017-04-03 15:08:28 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2017-04-03 15:12:50 +0200 |
commit | 47bf110cbbfbb425d7538c566332d2058fb45248 (patch) | |
tree | b376d6ea8eb7405147c88af45f090c6eed565794 | |
parent | a49503bbc75da39a8a2b0a9da0053e7b968b5e8b (diff) | |
download | mtk-20170518-47bf110cbbfbb425d7538c566332d2058fb45248.zip mtk-20170518-47bf110cbbfbb425d7538c566332d2058fb45248.tar.gz mtk-20170518-47bf110cbbfbb425d7538c566332d2058fb45248.tar.bz2 |
mac80211: backport an upstream fix for queue start/stop handling
Fixes issues with 802.11s
Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rw-r--r-- | package/kernel/mac80211/patches/325-mac80211-unconditionally-start-new-netdev-queues-wit.patch | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/325-mac80211-unconditionally-start-new-netdev-queues-wit.patch b/package/kernel/mac80211/patches/325-mac80211-unconditionally-start-new-netdev-queues-wit.patch new file mode 100644 index 0000000..ff7bbcb --- /dev/null +++ b/package/kernel/mac80211/patches/325-mac80211-unconditionally-start-new-netdev-queues-wit.patch @@ -0,0 +1,29 @@ +From: Johannes Berg <johannes.berg@intel.com> +Date: Wed, 29 Mar 2017 14:15:24 +0200 +Subject: [PATCH] mac80211: unconditionally start new netdev queues with iTXQ + support + +When internal mac80211 TXQs aren't supported, netdev queues must +always started out started even when driver queues are stopped +while the interface is added. This is necessary because with the +internal TXQ support netdev queues are never stopped and packet +scheduling/dropping is done in mac80211. + +Cc: stable@vger.kernel.org # 4.9+ +Fixes: 80a83cfc434b1 ("mac80211: skip netdev queue control with software queuing") +Reported-and-tested-by: Sven Eckelmann <sven.eckelmann@openmesh.com> +Signed-off-by: Johannes Berg <johannes.berg@intel.com> +--- + +--- a/net/mac80211/iface.c ++++ b/net/mac80211/iface.c +@@ -727,7 +727,8 @@ int ieee80211_do_open(struct wireless_de + ieee80211_recalc_ps(local); + + if (sdata->vif.type == NL80211_IFTYPE_MONITOR || +- sdata->vif.type == NL80211_IFTYPE_AP_VLAN) { ++ sdata->vif.type == NL80211_IFTYPE_AP_VLAN || ++ local->ops->wake_tx_queue) { + /* XXX: for AP_VLAN, actually track AP queues */ + netif_tx_start_all_queues(dev); + } else if (dev) { |