In case no specific BSS color is configured, set it to a random value.

Signed-off-by: David Bauer <m...@david-bauer.net>
---
 .../files/lib/netifd/wireless/mac80211.sh     |  4 +++-
 ...tapd-config-support-random-BSS-color.patch | 24 +++++++++++++++++++
 ...750-qos_map_set_without_interworking.patch |  2 +-
 3 files changed, 28 insertions(+), 2 deletions(-)
 create mode 100644 
package/network/services/hostapd/patches/465-hostapd-config-support-random-BSS-color.patch

diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh 
b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
index 27eecf3a7f..3d0afb261f 100644
--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
+++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
@@ -419,12 +419,14 @@ mac80211_hostapd_setup_base() {
                he_mac_cap=${he_mac_cap:2}
 
                append base_cfg "ieee80211ax=1" "$N"
-               [ -n "$he_bss_color" ] && append base_cfg 
"he_bss_color=$he_bss_color" "$N"
                [ "$hwmode" = "a" ] && {
                        append base_cfg "he_oper_chwidth=$vht_oper_chwidth" "$N"
                        append base_cfg 
"he_oper_centr_freq_seg0_idx=$vht_center_seg0" "$N"
                }
 
+               set_default he_bss_color 128
+               append base_cfg "he_bss_color=$he_bss_color" "$N"
+
                mac80211_add_he_capabilities \
                        
he_su_beamformer:${he_phy_cap:6:2}:0x80:$he_su_beamformer \
                        
he_su_beamformee:${he_phy_cap:8:2}:0x1:$he_su_beamformee \
diff --git 
a/package/network/services/hostapd/patches/465-hostapd-config-support-random-BSS-color.patch
 
b/package/network/services/hostapd/patches/465-hostapd-config-support-random-BSS-color.patch
new file mode 100644
index 0000000000..c0b01196c4
--- /dev/null
+++ 
b/package/network/services/hostapd/patches/465-hostapd-config-support-random-BSS-color.patch
@@ -0,0 +1,24 @@
+From c9304d3303d563ad6d2619f4e07864ed12f96889 Mon Sep 17 00:00:00 2001
+From: David Bauer <m...@david-bauer.net>
+Date: Sat, 14 May 2022 21:41:03 +0200
+Subject: [PATCH] hostapd: config: support random BSS color
+
+Configure the HE BSS color to a random value in case the config defines
+a BSS color which exceeds the max BSS color (63).
+
+Signed-off-by: David Bauer <m...@david-bauer.net>
+---
+ hostapd/config_file.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+--- a/hostapd/config_file.c
++++ b/hostapd/config_file.c
+@@ -3485,6 +3485,8 @@ static int hostapd_config_fill(struct ho
+       } else if (os_strcmp(buf, "he_bss_color") == 0) {
+               conf->he_op.he_bss_color = atoi(pos) & 0x3f;
+               conf->he_op.he_bss_color_disabled = 0;
++              if (atoi(pos) > 63)
++                      conf->he_op.he_bss_color = os_random() % 63 + 1;
+       } else if (os_strcmp(buf, "he_bss_color_partial") == 0) {
+               conf->he_op.he_bss_color_partial = atoi(pos);
+       } else if (os_strcmp(buf, "he_default_pe_duration") == 0) {
diff --git 
a/package/network/services/hostapd/patches/750-qos_map_set_without_interworking.patch
 
b/package/network/services/hostapd/patches/750-qos_map_set_without_interworking.patch
index 43360fb2e7..ff1d076b37 100644
--- 
a/package/network/services/hostapd/patches/750-qos_map_set_without_interworking.patch
+++ 
b/package/network/services/hostapd/patches/750-qos_map_set_without_interworking.patch
@@ -18,7 +18,7 @@
  
  #ifdef CONFIG_HS20
  static int hs20_parse_conn_capab(struct hostapd_bss_config *bss, char *buf,
-@@ -4040,10 +4040,10 @@ static int hostapd_config_fill(struct ho
+@@ -4042,10 +4042,10 @@ static int hostapd_config_fill(struct ho
                bss->gas_frag_limit = val;
        } else if (os_strcmp(buf, "gas_comeback_delay") == 0) {
                bss->gas_comeback_delay = atoi(pos);
-- 
2.35.1


_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to