65 lines
2.0 KiB
Diff
65 lines
2.0 KiB
Diff
From e2b91f89250c5702aab0a51f7d7ae87164f23117 Mon Sep 17 00:00:00 2001
|
|
From: Patrick Walther <patrick.walther@netmodule.com>
|
|
Date: Fri, 24 Jul 2020 14:41:09 +0200
|
|
|
|
---
|
|
src/drivers/driver_nl80211.c | 15 ++++++++-------
|
|
1 file changed, 8 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
|
|
index 6255d7956..6267819a7 100644
|
|
--- a/src/drivers/driver_nl80211.c
|
|
+++ b/src/drivers/driver_nl80211.c
|
|
@@ -2806,10 +2806,15 @@ static int wpa_driver_nl80211_del_beacon(struct i802_bss *bss)
|
|
struct nl_msg *msg;
|
|
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);
|
|
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);
|
|
}
|
|
|
|
@@ -5279,7 +5284,7 @@ static void nl80211_teardown_ap(struct i802_bss *bss)
|
|
nl80211_mgmt_unsubscribe(bss, "AP teardown");
|
|
|
|
nl80211_put_wiphy_data_ap(bss);
|
|
- bss->beacon_set = 0;
|
|
+ wpa_driver_nl80211_del_beacon(bss);
|
|
}
|
|
|
|
|
|
@@ -7697,8 +7702,6 @@ static int wpa_driver_nl80211_if_remove(struct i802_bss *bss,
|
|
} 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(bss);
|
|
nl80211_destroy_bss(bss);
|
|
if (!bss->added_if)
|
|
i802_set_iface_flags(bss, 0);
|
|
@@ -8092,7 +8095,6 @@ static int wpa_driver_nl80211_deinit_ap(void *priv)
|
|
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
|
|
@@ -8112,7 +8114,6 @@ static int wpa_driver_nl80211_stop_ap(void *priv)
|
|
if (!is_ap_interface(drv->nlmode))
|
|
return -1;
|
|
wpa_driver_nl80211_del_beacon(bss);
|
|
- bss->beacon_set = 0;
|
|
return 0;
|
|
}
|
|
|