From 38507640ec424ff6c9c552b0f3c2d068a6192146 Mon Sep 17 00:00:00 2001
From: Michael Lee <michael-cy.lee@mediatek.com>
Date: Fri, 28 Apr 2023 10:22:58 +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      | 3 ++-
 src/ap/ctrl_iface_ap.c | 4 +++-
 src/ap/hostapd.c       | 2 ++
 src/ap/hostapd.h       | 1 +
 6 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/hostapd/ctrl_iface.c b/hostapd/ctrl_iface.c
index 4c5d494..07c97b5 100644
--- a/hostapd/ctrl_iface.c
+++ b/hostapd/ctrl_iface.c
@@ -192,11 +192,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 51db23a..187e314 100644
--- a/src/ap/beacon.c
+++ b/src/ap/beacon.c
@@ -2125,7 +2125,8 @@ int ieee802_11_set_beacon(struct hostapd_data *hapd)
 			continue;
 
 		for (i = 0; i < colocated->num_bss; i++) {
-			if (colocated->bss[i] && colocated->bss[i]->started)
+			if (colocated->bss[i] && colocated->bss[i]->started &&
+			    !colocated->bss[i]->stopped_by_supplicant)
 				__ieee802_11_set_beacon(colocated->bss[i]);
 		}
 	}
@@ -2141,6 +2142,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;
 	}
@@ -2157,6 +2159,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 725d3cd..ae55521 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 2fae590..1ad37c5 100644
--- a/src/ap/ctrl_iface_ap.c
+++ b/src/ap/ctrl_iface_ap.c
@@ -951,8 +951,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 ef0d6db..b2fd9b9 100644
--- a/src/ap/hostapd.c
+++ b/src/ap/hostapd.c
@@ -477,6 +477,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);
@@ -1257,6 +1258,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 093c28a..3b51050 100644
--- a/src/ap/hostapd.h
+++ b/src/ap/hostapd.h
@@ -190,6 +190,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];
 
-- 
2.25.1

