diff --git a/autobuild_mac80211_release/0001-wifi7-mac80211-generate-hostapd-setting-from-ap-cap.patch b/autobuild_mac80211_release/0001-wifi7-mac80211-generate-hostapd-setting-from-ap-cap.patch
index 5b2e8bd..561a8d3 100644
--- a/autobuild_mac80211_release/0001-wifi7-mac80211-generate-hostapd-setting-from-ap-cap.patch
+++ b/autobuild_mac80211_release/0001-wifi7-mac80211-generate-hostapd-setting-from-ap-cap.patch
@@ -416,7 +416,7 @@
  		echo "wps_cred_processing=1" >> "$_config"
  	else
 diff --git a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh
-index bc59c303..66bdf5cf 100755
+index bc59c303..2508d9cf 100755
 --- a/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh
 +++ b/package/network/config/wifi-scripts/files/lib/netifd/wireless/mac80211.sh
 @@ -29,10 +29,12 @@ drv_mac80211_init_device_config() {
@@ -837,7 +837,7 @@
  		macaddr="$(mac80211_generate_mac $phy)"
  		macidx="$(($macidx + 1))"
  		default_macaddr=1
-@@ -917,12 +1076,28 @@ wpa_supplicant_set_config() {
+@@ -917,6 +1076,14 @@ wpa_supplicant_set_config() {
  }
  
  hostapd_set_config() {
@@ -852,21 +852,7 @@
  	[ -n "$hostapd_ctrl" ] || {
  		ubus_call hostapd config_set '{ "phy": "'"$phy"'", "config": "", "prev_config": "'"${hostapd_conf_file}.prev"'" }' > /dev/null
  		return 0;
- 	}
- 
- 	ubus wait_for hostapd
-+
-+	# each phy sleeps different times to prevent for ubus race condition.
-+	if [ "$phy" = "phy1" ]; then
-+		sleep 3;
-+	elif [ "$phy" = "phy2" ]; then
-+		sleep 6;
-+	fi
-+
- 	local hostapd_res="$(ubus_call hostapd config_set "{ \"phy\": \"$phy\", \"config\":\"${hostapd_conf_file}\", \"prev_config\": \"${hostapd_conf_file}.prev\"}")"
- 	ret="$?"
- 	[ "$ret" != 0 -o -z "$hostapd_res" ] && {
-@@ -1000,6 +1175,9 @@ mac80211_setup_vif() {
+@@ -1000,6 +1167,9 @@ mac80211_setup_vif() {
  
  	json_select ..
  	[ -n "$failed" ] || wireless_add_vif "$name" "$ifname"
@@ -876,7 +862,7 @@
  }
  
  get_freq() {
-@@ -1051,6 +1229,25 @@ mac80211_reset_config() {
+@@ -1051,6 +1221,25 @@ mac80211_reset_config() {
  	wdev_tool "$phy" set_config '{}'
  }
  
@@ -902,7 +888,7 @@
  drv_mac80211_setup() {
  	json_select config
  	json_get_vars \
-@@ -1059,7 +1256,8 @@ drv_mac80211_setup() {
+@@ -1059,7 +1248,8 @@ drv_mac80211_setup() {
  		txpower \
  		rxantenna txantenna \
  		frag rts beacon_int:100 htmode \
@@ -912,7 +898,18 @@
  	json_get_values basic_rate_list basic_rate
  	json_get_values scan_list scan_list
  	json_select ..
-@@ -1094,6 +1292,7 @@ drv_mac80211_setup() {
+@@ -1090,10 +1280,18 @@ drv_mac80211_setup() {
+ 		}
+ 	}
+ 
++	# each phy sleeps different times to prevent for ubus race condition.
++	if [ "$phy" = "phy1" ]; then
++		sleep 3;
++	elif [ "$phy" = "phy2" ]; then
++		sleep 6;
++	fi
++
+ 	hostapd_conf_file="/var/run/hostapd-$phy.conf"
  
  	macidx=0
  	staidx=0
@@ -920,7 +917,7 @@
  
  	[ -n "$chanbw" ] && {
  		for file in /sys/kernel/debug/ieee80211/$phy/ath9k*/chanbw /sys/kernel/debug/ieee80211/$phy/ath5k/bwmode; do
-@@ -1142,14 +1341,29 @@ drv_mac80211_setup() {
+@@ -1142,14 +1340,29 @@ drv_mac80211_setup() {
  
  	wpa_supplicant_init_config
  
