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 a854d833ea)
This commit is contained in:
David Bauer 2025-07-09 15:24:29 +02:00
parent 3bdd6d492e
commit ac80abb085
1 changed files with 18 additions and 7 deletions

View File

@ -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" ] && {