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 8d942194bd6..c0fcf8dba08 100644 --- a/package/network/config/wifi-scripts/files/lib/netifd/hostapd.sh +++ b/package/network/config/wifi-scripts/files/lib/netifd/hostapd.sh @@ -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" ] && {