[][MAC80211][hostapd][Fix no BSS load update issue]

[Description]
Fix the issue that the Extender (AP + STA) AP interface does not update
BSS load after STA interface finishes connection.

This patch depends on another patch
(https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7430262)

[Release-log]
N/A

Change-Id: I62029b92056381ff2ecdbab80e3919c937fcd652
Reviewed-on: https://gerrit.mediatek.inc/c/openwrt/feeds/mtk_openwrt_feeds/+/7693407
diff --git a/autobuild_mac80211_release/package/network/services/hostapd/patches/mtk-0033-hostapd-mtk-register-update_channel_utilization-agai.patch b/autobuild_mac80211_release/package/network/services/hostapd/patches/mtk-0033-hostapd-mtk-register-update_channel_utilization-agai.patch
new file mode 100644
index 0000000..c4172bb
--- /dev/null
+++ b/autobuild_mac80211_release/package/network/services/hostapd/patches/mtk-0033-hostapd-mtk-register-update_channel_utilization-agai.patch
@@ -0,0 +1,61 @@
+From 627b60aab19db40260366fae5c711adb2b09554e Mon Sep 17 00:00:00 2001
+From: Michael Lee <michael-cy.lee@mediatek.com>
+Date: Wed, 28 Jun 2023 11:08:12 +0800
+Subject: [PATCH] hostapd: mtk: register update_channel_utilization again
+
+The update_channel_utilization might be called when the bss is currently
+stopped by wpa_supplicant.
+In the original flow, the update_channel_utilization returns without
+register itself again, and channel utilization will not be updated for
+this bss anymore.
+This patch re-registers the update_channel_utilization again when the
+bss is stopped by wpa_supplicant.
+
+Signed-off-by: Michael Lee <michael-cy.lee@mediatek.com>
+---
+ src/ap/bss_load.c | 13 ++++++++-----
+ 1 file changed, 8 insertions(+), 5 deletions(-)
+
+diff --git a/src/ap/bss_load.c b/src/ap/bss_load.c
+index ae55521..f2a1a10 100644
+--- a/src/ap/bss_load.c
++++ b/src/ap/bss_load.c
+@@ -46,10 +46,12 @@ 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 &&
+-	      !hapd->stopped_by_supplicant))
++	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");
+@@ -58,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 +=
+@@ -76,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);
+ }
+-- 
+2.25.1
+