wifi-scripts: fix vht_oper_centr_freq_seg0_idx_map calculation
authorSean Khan <datapronix@protonmail.com>
Mon, 17 Feb 2025 21:35:32 +0000 (16:35 -0500)
committerJohn Crispin <john@phrozen.org>
Wed, 19 Feb 2025 07:07:20 +0000 (08:07 +0100)
When selecting channels above 100 in VHT160+ modes the center
frequency segment was incorrectly set to 50, causing the interface
to not come up.

Change logic to instead check if the channel is within ±28 channels
of the intended center, which matches the actual 160+ MHz channel
width specification for VHT160, HE160, and EHT160.

Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18013
Signed-off-by: John Crispin <john@phrozen.org>
package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc

index 0e3cfc5b901b85e45476d163ac3fb89874e39eb3..01e29db8e2e8c1d23c042c41683ca7116752aef9 100644 (file)
@@ -242,7 +242,7 @@ function device_htmode_append(config) {
                                [ 29, 15 ], [ 61, 47 ], [ 93, 79 ], [ 125, 111 ],
                                [ 157, 143 ], [ 189, 175 ], [ 221, 207 ]];
                for (let k, v in vht_oper_centr_freq_seg0_idx_map)
-                       if (v[0] <= config.channel) {
+                       if (config.channel >= (v[0] - 28) && config.channel <= v[0]) {
                                config.vht_oper_centr_freq_seg0_idx = v[1];
                                break;
                        }