mac80211: fix connecting multiple wds stations to an AP
authorFelix Fietkau <nbd@nbd.name>
Wed, 14 Dec 2022 12:53:40 +0000 (13:53 +0100)
committerFelix Fietkau <nbd@nbd.name>
Wed, 14 Dec 2022 12:54:02 +0000 (13:54 +0100)
A faulty check prevented the AP_VLAN interfaces from being brought up

Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/kernel/mac80211/patches/subsys/308-wifi-mac80211-fix-MLO-AP_VLAN-check.patch [new file with mode: 0644]
package/kernel/mac80211/patches/subsys/310-mac80211-add-support-for-restricting-netdev-features.patch

diff --git a/package/kernel/mac80211/patches/subsys/308-wifi-mac80211-fix-MLO-AP_VLAN-check.patch b/package/kernel/mac80211/patches/subsys/308-wifi-mac80211-fix-MLO-AP_VLAN-check.patch
new file mode 100644 (file)
index 0000000..2d181e3
--- /dev/null
@@ -0,0 +1,25 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Wed, 14 Dec 2022 13:46:38 +0100
+Subject: [PATCH] wifi: mac80211: fix MLO + AP_VLAN check
+
+Instead of preventing adding AP_VLAN to MLO enabled APs, this check was
+preventing adding more than one 4-addr AP_VLAN regardless of the MLO status.
+Fix this by adding missing extra checks.
+
+Fixes: ae960ee90bb1 ("wifi: mac80211: prevent VLANs on MLDs")
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/net/mac80211/iface.c
++++ b/net/mac80211/iface.c
+@@ -364,7 +364,9 @@ static int ieee80211_check_concurrent_if
+                       /* No support for VLAN with MLO yet */
+                       if (iftype == NL80211_IFTYPE_AP_VLAN &&
+-                          nsdata->wdev.use_4addr)
++                          sdata->wdev.use_4addr &&
++                          nsdata->vif.type == NL80211_IFTYPE_AP &&
++                          nsdata->vif.valid_links)
+                               return -EOPNOTSUPP;
+                       /*
index cd6048b4fd06a080d7feece28f616706f74a1a13..3d286d080d3a2a9d9cfe6a5b75dcec191fa9964f 100644 (file)
@@ -80,7 +80,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
  
 --- a/net/mac80211/iface.c
 +++ b/net/mac80211/iface.c
-@@ -2179,6 +2179,7 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -2181,6 +2181,7 @@ int ieee80211_if_add(struct ieee80211_lo
                ndev->priv_flags |= IFF_LIVE_ADDR_CHANGE;
                ndev->hw_features |= ndev->features &
                                        MAC80211_SUPPORTED_FEATURES_TX;