123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- --- a/src/drivers/driver_nl80211.c
- +++ b/src/drivers/driver_nl80211.c
- @@ -2490,13 +2490,18 @@ wpa_driver_nl80211_finish_drv_init(struc
- }
-
-
- -static int wpa_driver_nl80211_del_beacon(struct wpa_driver_nl80211_data *drv)
- +static int wpa_driver_nl80211_del_beacon(struct i802_bss *bss)
- {
- + struct wpa_driver_nl80211_data *drv = bss->drv;
- struct nl_msg *msg;
-
- + if (!bss->beacon_set)
- + return 0;
- +
- + bss->beacon_set = 0;
- wpa_printf(MSG_DEBUG, "nl80211: Remove beacon (ifindex=%d)",
- - drv->ifindex);
- - msg = nl80211_drv_msg(drv, 0, NL80211_CMD_DEL_BEACON);
- + bss->ifindex);
- + msg = nl80211_bss_msg(bss, 0, NL80211_CMD_DEL_BEACON);
- return send_and_recv_msgs(drv, msg, NULL, NULL);
- }
-
- @@ -2548,7 +2553,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);
- @@ -4703,8 +4708,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);
- }
-
-
- @@ -6728,8 +6732,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);
- @@ -7091,8 +7093,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);
-
- /*
- * If the P2P GO interface was dynamically added, then it is
- @@ -7111,8 +7112,7 @@ static int wpa_driver_nl80211_stop_ap(vo
- 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);
- return 0;
- }
-
|