aboutsummaryrefslogtreecommitdiffstats
path: root/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch')
-rw-r--r--package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch46
1 files changed, 14 insertions, 32 deletions
diff --git a/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch b/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch
index be10a413e6..d77ab4462f 100644
--- a/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch
+++ b/package/network/services/hostapd/patches/350-nl80211_del_beacon_bss.patch
@@ -1,72 +1,54 @@
--- 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;
+@@ -2536,10 +2536,15 @@ static int wpa_driver_nl80211_del_beacon
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);
-- msg = nl80211_drv_msg(drv, 0, NL80211_CMD_DEL_BEACON);
+ 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);
}
-@@ -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
+@@ -4753,7 +4758,7 @@ static void nl80211_teardown_ap(struct i
nl80211_mgmt_unsubscribe(bss, "AP teardown");
--
+
+ nl80211_put_wiphy_data_ap(bss);
- bss->beacon_set = 0;
+ wpa_driver_nl80211_del_beacon(bss);
}
-@@ -6728,8 +6732,6 @@ static int wpa_driver_nl80211_if_remove(
+@@ -6853,8 +6858,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);
+- wpa_driver_nl80211_del_beacon(bss);
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;
+@@ -7225,7 +7228,6 @@ static int wpa_driver_nl80211_deinit_ap(
if (!is_ap_interface(drv->nlmode))
return -1;
-- wpa_driver_nl80211_del_beacon(drv);
+ wpa_driver_nl80211_del_beacon(bss);
- 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;
+@@ -7245,7 +7247,6 @@ static int wpa_driver_nl80211_stop_ap(vo
if (!is_ap_interface(drv->nlmode))
return -1;
-- wpa_driver_nl80211_del_beacon(drv);
+ wpa_driver_nl80211_del_beacon(bss);
- bss->beacon_set = 0;
-+ wpa_driver_nl80211_del_beacon(bss);
return 0;
}