+@@ -2381,7 +2386,7 @@ static void wpa_driver_nl80211_deinit(st
+ nl80211_remove_monitor_interface(drv);
+
+ if (is_ap_interface(drv->nlmode))
+- wpa_driver_nl80211_del_beacon(drv);
++ wpa_driver_nl80211_del_beacon(bss);
+
+ if (drv->eapol_sock >= 0) {
+ eloop_unregister_read_sock(drv->eapol_sock);
+@@ -4233,8 +4238,7 @@ static void nl80211_teardown_ap(struct i
+ nl80211_remove_monitor_interface(drv);
+ else
+ nl80211_mgmt_unsubscribe(bss, "AP teardown");
+-
+- bss->beacon_set = 0;
++ wpa_driver_nl80211_del_beacon(bss);
+ }
+
+
+@@ -6165,8 +6169,6 @@ static int wpa_driver_nl80211_if_remove(
+ } else {
+ wpa_printf(MSG_DEBUG, "nl80211: First BSS - reassign context");
+ nl80211_teardown_ap(bss);
+- if (!bss->added_if && !drv->first_bss->next)
+- wpa_driver_nl80211_del_beacon(drv);
+ nl80211_destroy_bss(bss);
+ if (!bss->added_if)
+ i802_set_iface_flags(bss, 0);
+@@ -6528,8 +6530,7 @@ static int wpa_driver_nl80211_deinit_ap(
+ struct wpa_driver_nl80211_data *drv = bss->drv;
+ if (!is_ap_interface(drv->nlmode))
+ return -1;
+- wpa_driver_nl80211_del_beacon(drv);
+- bss->beacon_set = 0;
++ wpa_driver_nl80211_del_beacon(bss);