diff options
author | Felix Fietkau <nbd@nbd.name> | 2022-07-02 16:53:54 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2022-07-02 16:55:41 +0200 |
commit | 51e9d496ba7958fb9f2d3eb4bc7f257837145dd0 (patch) | |
tree | 857801cc8c6393b174e4f7394076aa5b7754ce82 /package/kernel/mac80211/patches | |
parent | 36acb3db03a3cf7dee80a1fc3b6f8f70efd20294 (diff) | |
download | upstream-51e9d496ba7958fb9f2d3eb4bc7f257837145dd0.tar.gz upstream-51e9d496ba7958fb9f2d3eb4bc7f257837145dd0.tar.bz2 upstream-51e9d496ba7958fb9f2d3eb4bc7f257837145dd0.zip |
mac80211: fix mesh queue selection issue
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'package/kernel/mac80211/patches')
-rw-r--r-- | package/kernel/mac80211/patches/subsys/337-mac80211-fix-queue-selection-for-mesh-OCB-interfaces.patch | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/subsys/337-mac80211-fix-queue-selection-for-mesh-OCB-interfaces.patch b/package/kernel/mac80211/patches/subsys/337-mac80211-fix-queue-selection-for-mesh-OCB-interfaces.patch new file mode 100644 index 0000000000..9547db03d1 --- /dev/null +++ b/package/kernel/mac80211/patches/subsys/337-mac80211-fix-queue-selection-for-mesh-OCB-interfaces.patch @@ -0,0 +1,28 @@ +From: Felix Fietkau <nbd@nbd.name> +Date: Sat, 2 Jul 2022 16:41:32 +0200 +Subject: [PATCH] mac80211: fix queue selection for mesh/OCB interfaces + +When using iTXQ, the code assumes that there is only one vif queue for +broadcast packets, using the BE queue. Allowing non-BE queue marking +violates that assumption and txq->ac == skb_queue_mapping is no longer +guaranteed. This can cause issues with queue handling in the driver and +also causes issues with the recent ATF change, resulting in an AQL +underflow warning. + +Cc: stable@vger.kernel.org +Signed-off-by: Felix Fietkau <nbd@nbd.name> +--- + +--- a/net/mac80211/wme.c ++++ b/net/mac80211/wme.c +@@ -147,8 +147,8 @@ u16 __ieee80211_select_queue(struct ieee + bool qos; + + /* all mesh/ocb stations are required to support WME */ +- if (sdata->vif.type == NL80211_IFTYPE_MESH_POINT || +- sdata->vif.type == NL80211_IFTYPE_OCB) ++ if (sta && (sdata->vif.type == NL80211_IFTYPE_MESH_POINT || ++ sdata->vif.type == NL80211_IFTYPE_OCB)) + qos = true; + else if (sta) + qos = sta->sta.wme; |