mac80211: Allow IBSS mode and different beacon intervals
authorHauke Mehrtens <hauke@hauke-m.de>
Sat, 9 Nov 2019 16:06:05 +0000 (17:06 +0100)
committerHauke Mehrtens <hauke@hauke-m.de>
Mon, 24 Feb 2020 22:23:46 +0000 (23:23 +0100)
ath10k-ct supports the combination to select IBSS (ADHOC) mode and
different beacon intervals together. mac80211 does not like this
combination, but Ben says this is ok, so remove this check.

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
package/kernel/mac80211/patches/subsys/400-allow-ibss-mixed.patch [new file with mode: 0644]

diff --git a/package/kernel/mac80211/patches/subsys/400-allow-ibss-mixed.patch b/package/kernel/mac80211/patches/subsys/400-allow-ibss-mixed.patch
new file mode 100644 (file)
index 0000000..52200b6
--- /dev/null
@@ -0,0 +1,29 @@
+ath10k-ct starting with version 5.2 allows the combination of 
+NL80211_IFTYPE_ADHOC and beacon_int_min_gcd in ath10k_10x_ct_if_comb 
+which triggers this warning. Ben told me that this is not a big problem 
+and we should ignore this.
+
+--- a/net/wireless/core.c
++++ b/net/wireless/core.c
+@@ -613,21 +613,6 @@ static int wiphy_verify_combinations(str
+                                   c->limits[j].max > 1))
+                               return -EINVAL;
+-                      /*
+-                       * This isn't well-defined right now. If you have an
+-                       * IBSS interface, then its beacon interval may change
+-                       * by joining other networks, and nothing prevents it
+-                       * from doing that.
+-                       * So technically we probably shouldn't even allow AP
+-                       * and IBSS in the same interface, but it seems that
+-                       * some drivers support that, possibly only with fixed
+-                       * beacon intervals for IBSS.
+-                       */
+-                      if (WARN_ON(types & BIT(NL80211_IFTYPE_ADHOC) &&
+-                                  c->beacon_int_min_gcd)) {
+-                              return -EINVAL;
+-                      }
+-
+                       cnt += c->limits[j].max;
+                       /*
+                        * Don't advertise an unsupported type