From d6e74f0048e9d45f9c2f95cf241796ff7af28cbf Mon Sep 17 00:00:00 2001
From: David Bauer <mail@david-bauer.net>
Date: Mon, 6 Jan 2025 08:31:26 +0100
Subject: [PATCH] net: mac80211: override incompatible basic-rates for mesh

Signed-off-by: David Bauer <mail@david-bauer.net>
---
 ...de-incompatible-basic-rates-for-mesh.patch | 58 +++++++++++++++++++
 1 file changed, 58 insertions(+)
 create mode 100644 patches/openwrt/0007-net-mac80211-override-incompatible-basic-rates-for-mesh.patch

diff --git a/patches/openwrt/0007-net-mac80211-override-incompatible-basic-rates-for-mesh.patch b/patches/openwrt/0007-net-mac80211-override-incompatible-basic-rates-for-mesh.patch
new file mode 100644
index 00000000..cb9bfe8b
--- /dev/null
+++ b/patches/openwrt/0007-net-mac80211-override-incompatible-basic-rates-for-mesh.patch
@@ -0,0 +1,58 @@
+From: David Bauer <mail@david-bauer.net>
+Date: Mon, 6 Jan 2025 08:30:35 +0100
+Subject: net: mac80211: override incompatible basic-rates for mesh
+
+Signed-off-by: David Bauer <mail@david-bauer.net>
+
+diff --git a/package/kernel/mac80211/patches/subsys/995-net-mac80211-override-incompatible-basic-rates-for-m.patch b/package/kernel/mac80211/patches/subsys/995-net-mac80211-override-incompatible-basic-rates-for-m.patch
+new file mode 100644
+index 0000000000000000000000000000000000000000..19ca64d5012d2974ab2a48e9363ecaa3b60aed4c
+--- /dev/null
++++ b/package/kernel/mac80211/patches/subsys/995-net-mac80211-override-incompatible-basic-rates-for-m.patch
+@@ -0,0 +1,46 @@
++From 091e1eea9e34db7cbf84379021fcbff82887e09a Mon Sep 17 00:00:00 2001
++From: David Bauer <mail@david-bauer.net>
++Date: Mon, 6 Jan 2025 08:23:54 +0100
++Subject: [PATCH] net: mac80211: override incompatible basic-rates for mesh
++
++This is a dirty hack for Gluon.
++
++We assume basic rate setup only affects the rate-controller on the TX
++side. As all devices we support have at least a 802.11n radio and thus
++cover 802.11b as well as 802.11g on 2.4 GHz, they are compatible with
++each other.
++
++As the basic rate was incorrectly set for mesh interfaces in the past,
++connections between mesh neighbors would fail when altering the basic
++rate.
++
++This patch ignores mismatches in the basic-rate field. By doing so, we
++avoid implementing some sort of scheduled switch between wireless
++configurations.
++
++Signed-off-by: David Bauer <mail@david-bauer.net>
++---
++ net/mac80211/mesh.c | 7 +++++--
++ 1 file changed, 5 insertions(+), 2 deletions(-)
++
++diff --git a/net/mac80211/mesh.c b/net/mac80211/mesh.c
++index 25223184d6e5..53b5339be5d0 100644
++--- a/net/mac80211/mesh.c
+++++ b/net/mac80211/mesh.c
++@@ -92,8 +92,11 @@ bool mesh_matches_local(struct ieee80211_sub_if_data *sdata,
++ 	ieee80211_sta_get_rates(sdata, ie, sband->band,
++ 				&basic_rates);
++ 
++-	if (sdata->vif.bss_conf.basic_rates != basic_rates)
++-		return false;
+++	if (sdata->vif.bss_conf.basic_rates != basic_rates) {
+++		wiphy_warn(sdata->wdev.wiphy,
+++			   "ignoring basic rate mismatch for peer (local=%x peer=%x)\n",
+++			   sdata->vif.bss_conf.basic_rates, basic_rates);
+++	}
++ 
++ 	cfg80211_chandef_create(&sta_chan_def, sdata->vif.bss_conf.chandef.chan,
++ 				NL80211_CHAN_NO_HT);
++-- 
++2.45.2
++
-- 
GitLab