diff options
| author | Sean Khan | 2025-02-17 22:08:09 +0000 |
|---|---|---|
| committer | John Crispin | 2025-02-19 07:07:20 +0000 |
| commit | eabea737fae4638ace92e1404279f0d2b1839a7a (patch) | |
| tree | 4e1b1cb03312351d5c5506ac108c72ddb9201b2c | |
| parent | 18511314275bd1056d2e2b6c6a382fa10c0a13f9 (diff) | |
| download | openwrt-eabea737fae4638ace92e1404279f0d2b1839a7a.tar.gz | |
wifi-scripts: fix missing VHT capabilities detection
* Add missing parentheses in the conditionals for VHT160/VHT160-80PLUS80
and VHT_MAX_MPDU capabilities. The missing parentheses caused the bitwise
AND to be evaluated after the equality comparison due to ECMA's operator
precedence, where `==` has higher precedence than `&`.
* Fix Max MPDU length detection by changing the comparison operators to
`>=` vs `>` otherwise the condition would never be met.
* Add missing default values:
- `true` value for `short_gi_80` (As it exists for `short_gi_20`, `short_gi_40`, `short_gi_160`)
- `7` for `vht_max_mpdu` (Without it the loop in MAX-MPDU-* calculation always compares with null)
* Change the `vht160` condition to `config.vht160 <= 2`. This flag is
`2` by default, and only ever set to `0` when `vht_oper_chwidth < 2`.
Signed-off-by: Sean Khan <datapronix@protonmail.com>
Link: https://github.com/openwrt/openwrt/pull/18013
Signed-off-by: John Crispin <john@phrozen.org>
| -rw-r--r-- | package/network/config/wifi-scripts/files-ucode/usr/share/schema/wireless.wifi-device.json | 6 | ||||
| -rw-r--r-- | package/network/config/wifi-scripts/files-ucode/usr/share/ucode/wifi/hostapd.uc | 8 |
2 files changed, 8 insertions, 6 deletions
diff --git a/package/network/config/wifi-scripts/files-ucode/usr/share/schema/wireless.wifi-device.json b/package/network/config/wifi-scripts/files-ucode/usr/share/schema/wireless.wifi-device.json index 4354b4f816..79f7ec4e76 100644 --- a/package/network/config/wifi-scripts/files-ucode/usr/share/schema/wireless.wifi-device.json +++ b/package/network/config/wifi-scripts/files-ucode/usr/share/schema/wireless.wifi-device.json @@ -635,7 +635,8 @@ }, "short_gi_80": { "description": "Short GI for 80 MHz", - "type": "boolean" + "type": "boolean", + "default": true }, "spectrum_mgmt_required": { "description": "Set Spectrum Management subfield in the Capability Information field", @@ -712,7 +713,8 @@ "description": "Indicates the maximum length of A-MPDU pre-EOF padding that the STA can recv", "type": "number", "minimum": 0, - "maximum": 7 + "maximum": 7, + "default": 7 }, "vht_max_mpdu": { "description": "Maximum MPDU length", 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 c08d26d04f..223f84f7d7 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 @@ -338,15 +338,15 @@ function device_htmode_append(config) { config.vht_capab += '[BF-ANTENNA-' + min(((vht_capab >> 13) & 3) + 1, config.beamformer_antennas) + ']'; /* supported Channel widths */ - if (vht_capab & 0xc == 8 && config.vht160 <= 2) + if ((vht_capab & 0xc) == 8 && config.vht160 <= 2) config.vht_capab += '[VHT160-80PLUS80]'; - else if (vht_capab & 0xc == 4 && config.vht160 <= 1) + else if ((vht_capab & 0xc) == 4 && config.vht160 <= 2) config.vht_capab += '[VHT160]'; /* maximum MPDU length */ - if (vht_capab & 3 > 1 && config.vht_max_mpdu > 11454) + if ((vht_capab & 3) > 1 && config.vht_max_mpdu >= 11454) config.vht_capab += '[MAX-MPDU-11454]'; - else if (vht_capab & 3 && config.vht_max_mpdu > 7991) + else if ((vht_capab & 3) && config.vht_max_mpdu >= 7991) config.vht_capab += '[MAX-MPDU-7991]'; /* maximum A-MPDU length exponent */ |