From 9444dedd3f8bd97887c9cf274587b4c76f94d621 Mon Sep 17 00:00:00 2001
From: Evelyn Tsai <evelyn.tsai@mediatek.com>
Date: Fri, 12 May 2023 05:21:28 +0800
Subject: [PATCH 26/32] hostapd: mtk: avoid setting beacon after wpa_supplicant
 stop the AP

Add a new variable 'stopped_by_supplicant' to indicate the AP
interface is currently stopped by co-locating STA interface.
After the STA interface finishes association with some other APs, it
will reload the co-locating AP interfaces and marks the
'stopped_by_supplicant' as 0.
---
 hostapd/ctrl_iface.c   | 4 ++++
 src/ap/beacon.c        | 4 ++++
 src/ap/bss_load.c      | 3 ++-
 src/ap/ctrl_iface_ap.c | 4 +++-
 src/ap/hostapd.c       | 2 ++
 src/ap/hostapd.h       | 1 +
 6 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c
index 9989a04ce..4952bef89 100644
--- a/hostapd/ctrl_iface.c
+++ b/hostapd/ctrl_iface.c
@@ -194,11 +194,15 @@ static int hostapd_ctrl_iface_update(struct hostapd_data *hapd, char *txt)
 {
 	struct hostapd_config * (*config_read_cb)(const char *config_fname);
 	struct hostapd_iface *iface = hapd->iface;
+	size_t j;
 
 	config_read_cb = iface->interfaces->config_read_cb;
 	iface->interfaces->config_read_cb = hostapd_ctrl_iface_config_read;
 	reload_opts = txt;
 
+	for (j = 0; j < iface->num_bss; j++)
+		iface->bss[j]->stopped_by_supplicant = 0;
+
 	hostapd_reload_config(iface, 0);
 
 	iface->interfaces->config_read_cb = config_read_cb;
diff --git a/src/ap/beacon.c b/src/ap/beacon.c
index f26e5254c..24144feff 100644
--- a/src/ap/beacon.c
+++ b/src/ap/beacon.c
@@ -2247,6 +2247,8 @@ int ieee802_11_set_beacon(struct hostapd_data *hapd)
 
 		for (i = 0; i < other->num_bss; i++) {
 			if (other->bss[i] && other->bss[i]->started)
+			if (other->bss[i] && other->bss[i]->started &&
+			    !other->bss[i]->stopped_by_supplicant)
 				__ieee802_11_set_beacon(other->bss[i]);
 		}
 	}
@@ -2262,6 +2264,7 @@ int ieee802_11_set_beacons(struct hostapd_iface *iface)
 
 	for (i = 0; i < iface->num_bss; i++) {
 		if (iface->bss[i]->started &&
+		    !iface->bss[i]->stopped_by_supplicant &&
 		    ieee802_11_set_beacon(iface->bss[i]) < 0)
 			ret = -1;
 	}
@@ -2278,6 +2281,7 @@ int ieee802_11_update_beacons(struct hostapd_iface *iface)
 
 	for (i = 0; i < iface->num_bss; i++) {
 		if (iface->bss[i]->beacon_set_done && iface->bss[i]->started &&
+		    !iface->bss[i]->stopped_by_supplicant &&
 		    ieee802_11_set_beacon(iface->bss[i]) < 0)
 			ret = -1;
 	}
diff --git a/src/ap/bss_load.c b/src/ap/bss_load.c
index 725d3cd34..ae5552140 100644
--- a/src/ap/bss_load.c
+++ b/src/ap/bss_load.c
@@ -46,7 +46,8 @@ static void update_channel_utilization(void *eloop_data, void *user_data)
 	int err;
 	struct hostapd_iface *iface = hapd->iface;
 
-	if (!(hapd->beacon_set_done && hapd->started))
+	if (!(hapd->beacon_set_done && hapd->started &&
+	      !hapd->stopped_by_supplicant))
 		return;
 
 	err = hostapd_drv_get_survey(hapd, hapd->iface->freq);
diff --git a/src/ap/ctrl_iface_ap.c b/src/ap/ctrl_iface_ap.c
index aab8a4665..d52188bb7 100644
--- a/src/ap/ctrl_iface_ap.c
+++ b/src/ap/ctrl_iface_ap.c
@@ -1028,8 +1028,10 @@ int hostapd_ctrl_iface_stop_ap(struct hostapd_data *hapd)
 	struct hostapd_iface *iface = hapd->iface;
 	int i;
 
-	for (i = 0; i < iface->num_bss; i++)
+	for (i = 0; i < iface->num_bss; i++){
+		iface->bss[i]->stopped_by_supplicant = 1;
 		hostapd_drv_stop_ap(iface->bss[i]);
+	}
 
 	return 0;
 }
diff --git a/src/ap/hostapd.c b/src/ap/hostapd.c
index abadd1ad0..6e6ae77d7 100644
--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
@@ -508,6 +508,7 @@ void hostapd_free_hapd_data(struct hostapd_data *hapd)
 	}
 	hapd->started = 0;
 	hapd->beacon_set_done = 0;
+	hapd->stopped_by_supplicant = 0;
 
 	wpa_printf(MSG_DEBUG, "%s(%s)", __func__, hapd->conf->iface);
 	hostapd_ubus_free_bss(hapd);
@@ -1316,6 +1317,7 @@ static int hostapd_setup_bss(struct hostapd_data *hapd, int first,
 		return -1;
 	}
 	hapd->started = 1;
+	hapd->stopped_by_supplicant = 0;
 
 	if (!first || first == -1) {
 		u8 *addr = hapd->own_addr;
diff --git a/src/ap/hostapd.h b/src/ap/hostapd.h
index 072205c3c..4f1f98824 100644
--- a/src/ap/hostapd.h
+++ b/src/ap/hostapd.h
@@ -191,6 +191,7 @@ struct hostapd_data {
 	unsigned int started:1;
 	unsigned int disabled:1;
 	unsigned int reenable_beacon:1;
+	unsigned int stopped_by_supplicant:1;
 
 	u8 own_addr[ETH_ALEN];
 	u8 mld_addr[ETH_ALEN];
-- 
2.39.2

