From 67e2363c4875dd918418dd84b43f86041db690c7 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] 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        |  5 ++++-
 src/ap/bss_load.c      | 10 +++++++---
 src/ap/ctrl_iface_ap.c |  4 +++-
 src/ap/hostapd.c       |  4 +++-
 src/ap/hostapd.h       |  1 +
 6 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c
index e575c37d1..0e352c5c7 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..1aaeaa8e4 100644
--- a/src/ap/beacon.c
+++ b/src/ap/beacon.c
@@ -2246,7 +2246,8 @@ int ieee802_11_set_beacon(struct hostapd_data *hapd)
 			continue;
 
 		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 +2263,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 +2280,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..78fd9d8ec 100644
--- a/src/ap/bss_load.c
+++ b/src/ap/bss_load.c
@@ -49,6 +49,9 @@ static void update_channel_utilization(void *eloop_data, void *user_data)
 	if (!(hapd->beacon_set_done && hapd->started))
 		return;
 
+	if(hapd->stopped_by_supplicant)
+		goto skip_update;
+
 	err = hostapd_drv_get_survey(hapd, hapd->iface->freq);
 	if (err) {
 		wpa_printf(MSG_ERROR, "BSS Load: Failed to get survey data");
@@ -57,9 +60,6 @@ static void update_channel_utilization(void *eloop_data, void *user_data)
 
 	ieee802_11_set_beacon(hapd);
 
-	if (get_bss_load_update_timeout(hapd, &sec, &usec) < 0)
-		return;
-
 	if (hapd->conf->chan_util_avg_period) {
 		iface->chan_util_samples_sum += iface->channel_utilization;
 		iface->chan_util_num_sample_periods +=
@@ -75,6 +75,10 @@ static void update_channel_utilization(void *eloop_data, void *user_data)
 		}
 	}
 
+skip_update:
+	if (get_bss_load_update_timeout(hapd, &sec, &usec) < 0)
+		return;
+
 	eloop_register_timeout(sec, usec, update_channel_utilization, hapd,
 			       NULL);
 }
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 28e549b61..be75613c8 100644
--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
@@ -510,6 +510,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_ucode_free_bss(hapd);
@@ -1320,6 +1321,7 @@ int hostapd_setup_bss(struct hostapd_data *hapd, int first, bool start_beacon)
 		return -1;
 	}
 	hapd->started = 1;
+	hapd->stopped_by_supplicant = 0;
 
 	if (!first || first == -1) {
 		u8 *addr = hapd->own_addr;
@@ -4289,7 +4291,7 @@ void hostapd_switch_color(struct hostapd_data *hapd, u64 bitmap)
 {
 	struct os_reltime now;
 
-	if (hapd->cca_in_progress)
+	if (hapd->cca_in_progress || hapd->stopped_by_supplicant)
 		return;
 
 	if (os_get_reltime(&now))
diff --git a/src/ap/hostapd.h b/src/ap/hostapd.h
index 5bd1537fe..435dbd027 100644
--- a/src/ap/hostapd.h
+++ b/src/ap/hostapd.h
@@ -197,6 +197,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

