]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
wifi-scripts: correctly set basic-rates with wpa_supplicant
authorDavid Bauer <mail@david-bauer.net>
Wed, 9 Jul 2025 13:24:29 +0000 (15:24 +0200)
committerDavid Bauer <mail@david-bauer.net>
Fri, 11 Jul 2025 00:59:35 +0000 (02:59 +0200)
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>
package/network/config/wifi-scripts/files/lib/netifd/hostapd.sh

index 8d942194bd6663f3b2445c890d07838c5e6c423c..c0fcf8dba080219c1706630f61064c7610d5ffb4 100644 (file)
@@ -1317,11 +1317,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
@@ -1582,12 +1584,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" ] && {