summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Bauer2025-07-09 13:24:29 +0000
committerDavid Bauer2025-07-24 01:46:38 +0000
commitac80abb085117d5f198729b982e80f4f3de7bd18 (patch)
tree2873e1c8352be07c2f81803adb518a94fdc9b4e8
parent3bdd6d492ee24bb46c8578ef939e41f3c998dda9 (diff)
downloadopenwrt-ac80abb085117d5f198729b982e80f4f3de7bd18.tar.gz
wifi-scripts: correctly set basic-rates with wpa_supplicant
Correctly load the list of basic_rates from UCI. basic-rates shall be stored as a option-list. The current code did not retrieve this list correctly. wpa_supplicant uses a different config option to set basic-rates when operating in mesh-mode. Use the correct config key and calculation for mesh-interfaces. Signed-off-by: David Bauer <mail@david-bauer.net> (cherry picked from commit a854d833eabdbc3b42065927c136d75b981a1021)
-rw-r--r--package/network/config/wifi-scripts/files/lib/netifd/hostapd.sh25
1 files changed, 18 insertions, 7 deletions
diff --git a/package/network/config/wifi-scripts/files/lib/netifd/hostapd.sh b/package/network/config/wifi-scripts/files/lib/netifd/hostapd.sh
index d673f5405b..6bdd0236cf 100644
--- a/package/network/config/wifi-scripts/files/lib/netifd/hostapd.sh
+++ b/package/network/config/wifi-scripts/files/lib/netifd/hostapd.sh
@@ -1361,11 +1361,13 @@ wpa_supplicant_add_network() {
json_get_vars \
ssid bssid key \
- basic_rate mcast_rate \
+ mcast_rate \
ieee80211w ieee80211r fils ocv \
multi_ap \
default_disabled
+ json_get_values basic_rate_list basic_rate
+
case "$auth_type" in
sae|owe|eap2|eap192)
set_default ieee80211w 2
@@ -1626,12 +1628,21 @@ wpa_supplicant_add_network() {
[ -n "$bssid_blacklist" ] && append network_data "bssid_blacklist=$bssid_blacklist" "$N$T"
[ -n "$bssid_whitelist" ] && append network_data "bssid_whitelist=$bssid_whitelist" "$N$T"
- [ -n "$basic_rate" ] && {
- local br rate_list=
- for br in $basic_rate; do
- wpa_supplicant_add_rate rate_list "$br"
- done
- [ -n "$rate_list" ] && append network_data "rates=$rate_list" "$N$T"
+ [ -n "$basic_rate_list" ] && {
+ local br rate rate_list=
+
+ if [ "$mode" = mesh ]; then
+ for br in $basic_rate_list; do
+ rate="$(($br / 100))"
+ append rate_list "$rate" " "
+ done
+ [ -n "$rate_list" ] && append network_data "mesh_basic_rates=$rate_list" "$N$T"
+ else
+ for br in $basic_rate_list; do
+ wpa_supplicant_add_rate rate_list "$br"
+ done
+ [ -n "$rate_list" ] && append network_data "rates=$rate_list" "$N$T"
+ fi
}
[ -n "$mcast_rate" ] && {