From: Ryan Chen Date: Sun, 18 Jan 2026 02:51:14 +0000 (-0600) Subject: wifi-scripts: fix WiFi 6E discovery for 6GHz 320MHz operation X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a8bdb1e6d65adac21d2dc1b40cdbae1af2af4d15;p=thirdparty%2Fopenwrt.git wifi-scripts: fix WiFi 6E discovery for 6GHz 320MHz operation WiFi 6E (802.11ax) clients cannot discover 6GHz APs operating at 320MHz because the HE Operation element contains uninitialized center frequency values. For EHT320 mode, the code sets eht_oper_centr_freq_seg0_idx but not the corresponding HE values. Later, the HE values are copied from VHT values, but VHT is not used on 6GHz, leaving he_oper_chwidth and he_oper_centr_freq_seg0_idx at 0. This causes WiFi 6E clients to see incorrect channel width information, making the AP invisible to them during scanning. Fix this by: 1. Setting he_oper_chwidth to 3 (160MHz) for EHT320 mode 2. Computing he_oper_centr_freq_seg0_idx based on the 160MHz segment that contains the primary channel 3. Preserving these pre-set values instead of overwriting them with uninitialized VHT values WiFi 7 clients continue to see 320MHz operation via the EHT Operation element, while WiFi 6E clients can now discover and connect at 160MHz. Signed-off-by: Ryan Chen Link: https://github.com/openwrt/openwrt/pull/21588 Signed-off-by: Robert Marko --- diff --git a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc index 33eaa0ee15a..61570d76f2b 100644 --- a/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc +++ b/package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc @@ -283,6 +283,17 @@ function device_htmode_append(config) { } config.op_class = 137; config.eht_oper_chwidth = 7; + + /* + * Set HE operation values for 160MHz backward compatibility + * with WiFi 6E clients. Pick the 160MHz half that contains + * the primary channel. + */ + config.he_oper_chwidth = 3; + if (config.channel < config.eht_oper_centr_freq_seg0_idx) + config.he_oper_centr_freq_seg0_idx = config.eht_oper_centr_freq_seg0_idx - 16; + else + config.he_oper_centr_freq_seg0_idx = config.eht_oper_centr_freq_seg0_idx + 16; break; case 'HE40': @@ -383,8 +394,15 @@ function device_htmode_append(config) { config.ieee80211ax = true; if (config.hw_mode == 'a') { - config.he_oper_chwidth = config.vht_oper_chwidth; - config.he_oper_centr_freq_seg0_idx = config.vht_oper_centr_freq_seg0_idx; + /* + * Only set HE values from VHT if not already set. + * For 6GHz 320MHz, these are pre-set for 160MHz backward + * compatibility with WiFi 6E clients. + */ + if (!config.he_oper_chwidth) + config.he_oper_chwidth = config.vht_oper_chwidth; + if (!config.he_oper_centr_freq_seg0_idx) + config.he_oper_centr_freq_seg0_idx = config.vht_oper_centr_freq_seg0_idx; } if (config.band == "6g") {