mac80211: fix HE issues with AP_VLAN interfaces
authorFelix Fietkau <nbd@nbd.name>
Thu, 22 Jun 2023 17:21:42 +0000 (19:21 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 23 Jun 2023 11:58:09 +0000 (13:58 +0200)
Fixes issues with aggregation

Signed-off-by: Felix Fietkau <nbd@nbd.name>
package/kernel/mac80211/patches/subsys/337-mac80211-fix-sband-iftype-data-lookup-for-AP_VLAN.patch [new file with mode: 0644]
package/kernel/mac80211/patches/subsys/500-mac80211_configure_antenna_gain.patch

diff --git a/package/kernel/mac80211/patches/subsys/337-mac80211-fix-sband-iftype-data-lookup-for-AP_VLAN.patch b/package/kernel/mac80211/patches/subsys/337-mac80211-fix-sband-iftype-data-lookup-for-AP_VLAN.patch
new file mode 100644 (file)
index 0000000..9d8b197
--- /dev/null
@@ -0,0 +1,35 @@
+From: Felix Fietkau <nbd@nbd.name>
+Date: Thu, 22 Jun 2023 18:02:25 +0200
+Subject: [PATCH] mac80211: fix sband iftype data lookup for AP_VLAN
+
+AP_VLAN interfaces are virtual, so doesn't really exist as a type for
+capabilities. When passed in as a type, AP is the one that's really intended.
+
+Fixes: c4cbaf7973a7 ("cfg80211: Add support for HE")
+Signed-off-by: Felix Fietkau <nbd@nbd.name>
+---
+
+--- a/include/net/cfg80211.h
++++ b/include/net/cfg80211.h
+@@ -567,6 +567,9 @@ ieee80211_get_sband_iftype_data(const st
+       if (WARN_ON(iftype >= NL80211_IFTYPE_MAX))
+               return NULL;
++      if (iftype == NL80211_IFTYPE_AP_VLAN)
++              iftype = NL80211_IFTYPE_AP;
++
+       for (i = 0; i < sband->n_iftype_data; i++)  {
+               const struct ieee80211_sband_iftype_data *data =
+                       &sband->iftype_data[i];
+--- a/include/net/cfg80211.h
++++ b/include/net/cfg80211.h
+@@ -567,6 +567,9 @@ ieee80211_get_sband_iftype_data(const st
+       if (WARN_ON(iftype >= NL80211_IFTYPE_MAX))
+               return NULL;
++      if (iftype == NL80211_IFTYPE_AP_VLAN)
++              iftype = NL80211_IFTYPE_AP;
++
+       for (i = 0; i < sband->n_iftype_data; i++)  {
+               const struct ieee80211_sband_iftype_data *data =
+                       &sband->iftype_data[i];
index 4a3984fb4245105b3f39bf5f76a1a23fefde99b4..7438f4fb8846f044343bb65e4b9f34544a3108fa 100644 (file)
@@ -1,6 +1,6 @@
 --- a/include/net/cfg80211.h
 +++ b/include/net/cfg80211.h
-@@ -4081,6 +4081,7 @@ struct mgmt_frame_regs {
+@@ -4087,6 +4087,7 @@ struct mgmt_frame_regs {
   *    (as advertised by the nl80211 feature flag.)
   * @get_tx_power: store the current TX power into the dbm variable;
   *    return 0 if successful
@@ -8,7 +8,7 @@
   *
   * @rfkill_poll: polls the hw rfkill line, use cfg80211 reporting
   *    functions to adjust rfkill hw state
-@@ -4431,6 +4432,7 @@ struct cfg80211_ops {
+@@ -4437,6 +4438,7 @@ struct cfg80211_ops {
                                enum nl80211_tx_power_setting type, int mbm);
        int     (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev,
                                int *dbm);