--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
-@@ -2563,10 +2563,15 @@ static int wpa_driver_nl80211_del_beacon
- struct nl_msg *msg;
+@@ -2938,11 +2938,11 @@ static int wpa_driver_nl80211_del_beacon
struct wpa_driver_nl80211_data *drv = bss->drv;
-+ if (!bss->beacon_set)
-+ return 0;
-+
-+ bss->beacon_set = 0;
-+
wpa_printf(MSG_DEBUG, "nl80211: Remove beacon (ifindex=%d)",
- drv->ifindex);
+ bss->ifindex);
+ bss->beacon_set = 0;
+ bss->freq = 0;
nl80211_put_wiphy_data_ap(bss);
- msg = nl80211_drv_msg(drv, 0, NL80211_CMD_DEL_BEACON);
+ msg = nl80211_bss_msg(bss, 0, NL80211_CMD_DEL_BEACON);
- return send_and_recv_msgs(drv, msg, NULL, NULL);
+ return send_and_recv_msgs(drv, msg, NULL, NULL, NULL, NULL);
}
-@@ -4832,7 +4837,7 @@ static void nl80211_teardown_ap(struct i
+@@ -5661,7 +5661,7 @@ static void nl80211_teardown_ap(struct i
nl80211_mgmt_unsubscribe(bss, "AP teardown");
nl80211_put_wiphy_data_ap(bss);
}
-@@ -7037,8 +7042,6 @@ static int wpa_driver_nl80211_if_remove(
+@@ -8120,8 +8120,6 @@ static int wpa_driver_nl80211_if_remove(
} else {
wpa_printf(MSG_DEBUG, "nl80211: First BSS - reassign context");
nl80211_teardown_ap(bss);
nl80211_destroy_bss(bss);
if (!bss->added_if)
i802_set_iface_flags(bss, 0);
-@@ -7409,7 +7412,6 @@ static int wpa_driver_nl80211_deinit_ap(
- if (!is_ap_interface(drv->nlmode))
- return -1;
- wpa_driver_nl80211_del_beacon(bss);
-- bss->beacon_set = 0;
-
- /*
- * If the P2P GO interface was dynamically added, then it is
-@@ -7429,7 +7431,6 @@ static int wpa_driver_nl80211_stop_ap(vo
- if (!is_ap_interface(drv->nlmode))
- return -1;
- wpa_driver_nl80211_del_beacon(bss);
-- bss->beacon_set = 0;
- return 0;
- }
-