diff --git a/feeds/wifi-ax/hostapd/files/hostapd.uc b/feeds/wifi-ax/hostapd/files/hostapd.uc index cc026cc85..b52732adc 100644 --- a/feeds/wifi-ax/hostapd/files/hostapd.uc +++ b/feeds/wifi-ax/hostapd/files/hostapd.uc @@ -117,6 +117,9 @@ function iface_reload_config(phy, config, old_config) if (is_equal(old_config.bss, config.bss)) return true; + if (!old_config.bss || !old_config.bss[0]) + return false; + if (config.bss[0].ifname != old_config.bss[0].ifname) return false; diff --git a/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh b/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh index 545eb9c59..244d8e852 100644 --- a/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh +++ b/feeds/wifi-ax/mac80211/files/lib/netifd/wireless/mac80211.sh @@ -1033,6 +1033,12 @@ drv_mac80211_setup() { json_get_values scan_list scan_list json_select .. + json_select data && { + json_get_var prev_rxantenna rxantenna + json_get_var prev_txantenna txantenna + json_select .. + } + find_phy || { echo "Could not find PHY for device '$1'" wireless_set_retry 0 @@ -1041,8 +1047,6 @@ drv_mac80211_setup() { [ "$band" = "6g" ] && set_default multiple_bssid 1 - wireless_set_data phy="$phy" - local wdev local cwdev local found @@ -1077,6 +1081,9 @@ drv_mac80211_setup() { [ "$txantenna" = "all" ] && txantenna=0xffffffff [ "$rxantenna" = "all" ] && rxantenna=0xffffffff + [ "$rxantenna" = "$prev_rxantenna" -a "$txantenna" = "$prev_txantenna" ] || mac80211_reset_config "$phy" + wireless_set_data phy="$phy" txantenna="$txantenna" rxantenna="$rxantenna" + iw phy "$phy" set antenna $txantenna $rxantenna >/dev/null 2>&1 iw phy "$phy" set antenna_gain $antenna_gain >/dev/null 2>&1 iw phy "$phy" set distance "$distance" >/dev/null 2>&1