From cc4ace547c0b0ebef084e9634f729267b6c89f08 Mon Sep 17 00:00:00 2001
From: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
Date: Mon, 20 Feb 2023 10:51:47 +0800
Subject: [PATCH 045/104] mtk: hostapd: Add sta-assisted DFS state update
 mechanism

Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
---
 src/ap/dfs.c                       | 20 ++++++++++++++++++++
 src/ap/dfs.h                       |  3 +++
 src/ap/drv_callbacks.c             | 28 ++++++++++++++++++++++++++++
 src/common/wpa_ctrl.h              |  1 +
 src/drivers/driver.h               | 14 ++++++++++++++
 src/drivers/driver_nl80211_event.c |  6 ++++++
 src/drivers/nl80211_copy.h         |  6 ++++++
 7 files changed, 78 insertions(+)

diff --git a/src/ap/dfs.c b/src/ap/dfs.c
index c703d2fb8..3e036441b 100644
--- a/src/ap/dfs.c
+++ b/src/ap/dfs.c
@@ -1522,6 +1522,26 @@ int hostapd_dfs_nop_finished(struct hostapd_iface *iface, int freq,
 }
 
 
+int hostapd_dfs_sta_update_state(struct hostapd_iface *iface, int freq,
+				 int ht_enabled, int chan_offset, int chan_width,
+				 int cf1, int cf2, u32 state)
+{
+	wpa_msg(iface->bss[0]->msg_ctx, MSG_INFO, DFS_EVENT_STA_UPDATE
+		"freq=%d ht_enabled=%d chan_offset=%d chan_width=%d cf1=%d cf2=%d state=%s",
+		freq, ht_enabled, chan_offset, chan_width, cf1, cf2,
+		(state == HOSTAPD_CHAN_DFS_AVAILABLE) ? "available" : "usable");
+
+	/* Proceed only if DFS is not offloaded to the driver */
+	if (iface->drv_flags & WPA_DRIVER_FLAGS_DFS_OFFLOAD)
+		return 0;
+
+	set_dfs_state(iface, freq, ht_enabled, chan_offset, chan_width,
+		      cf1, cf2, state);
+
+	return 0;
+}
+
+
 int hostapd_is_dfs_required(struct hostapd_iface *iface)
 {
 	int n_chans, n_chans1, start_chan_idx, start_chan_idx1, res;
diff --git a/src/ap/dfs.h b/src/ap/dfs.h
index c2556d2d9..25ba29ca1 100644
--- a/src/ap/dfs.h
+++ b/src/ap/dfs.h
@@ -30,6 +30,9 @@ int hostapd_dfs_radar_detected(struct hostapd_iface *iface, int freq,
 int hostapd_dfs_nop_finished(struct hostapd_iface *iface, int freq,
 			     int ht_enabled,
 			     int chan_offset, int chan_width, int cf1, int cf2);
+int hostapd_dfs_sta_update_state(struct hostapd_iface *iface, int freq,
+				 int ht_enabled, int chan_offset, int chan_width,
+				 int cf1, int cf2, u32 state);
 int hostapd_is_dfs_required(struct hostapd_iface *iface);
 int hostapd_is_dfs_chan_available(struct hostapd_iface *iface);
 int hostapd_dfs_start_cac(struct hostapd_iface *iface, int freq,
diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c
index e8796f709..caa171474 100644
--- a/src/ap/drv_callbacks.c
+++ b/src/ap/drv_callbacks.c
@@ -2226,6 +2226,24 @@ static void hostapd_event_dfs_cac_started(struct hostapd_data *hapd,
 			      radar->cf1, radar->cf2);
 }
 
+static void hostapd_event_dfs_sta_cac_skipped(struct hostapd_data *hapd,
+					      struct dfs_event *radar)
+{
+	wpa_printf(MSG_DEBUG, "DFS CAC skipped (by STA) on %d MHz", radar->freq);
+	hostapd_dfs_sta_update_state(hapd->iface, radar->freq, radar->ht_enabled,
+				     radar->chan_offset, radar->chan_width,
+				     radar->cf1, radar->cf2, HOSTAPD_CHAN_DFS_AVAILABLE);
+}
+
+static void hostapd_event_dfs_sta_cac_expired(struct hostapd_data *hapd,
+					      struct dfs_event *radar)
+{
+	wpa_printf(MSG_DEBUG, "DFS CAC expired (by STA) on %d MHz", radar->freq);
+	hostapd_dfs_sta_update_state(hapd->iface, radar->freq, radar->ht_enabled,
+				     radar->chan_offset, radar->chan_width,
+				     radar->cf1, radar->cf2, HOSTAPD_CHAN_DFS_USABLE);
+}
+
 #endif /* NEED_AP_MLME */
 
 
@@ -2592,6 +2610,16 @@ void hostapd_wpa_event(void *ctx, enum wpa_event_type event,
 		hapd = switch_link_hapd(hapd, data->dfs_event.link_id);
 		hostapd_event_dfs_nop_finished(hapd, &data->dfs_event);
 		break;
+	case EVENT_DFS_STA_CAC_SKIPPED:
+		if (!data)
+			break;
+		hostapd_event_dfs_sta_cac_skipped(hapd, &data->dfs_event);
+		break;
+	case EVENT_DFS_STA_CAC_EXPIRED:
+		if (!data)
+			break;
+		hostapd_event_dfs_sta_cac_expired(hapd, &data->dfs_event);
+		break;
 	case EVENT_CHANNEL_LIST_CHANGED:
 		/* channel list changed (regulatory?), update channel list */
 		/* TODO: check this. hostapd_get_hw_features() initializes
diff --git a/src/common/wpa_ctrl.h b/src/common/wpa_ctrl.h
index c5bb9abd7..88ad54d6f 100644
--- a/src/common/wpa_ctrl.h
+++ b/src/common/wpa_ctrl.h
@@ -383,6 +383,7 @@ extern "C" {
 #define DFS_EVENT_CAC_COMPLETED "DFS-CAC-COMPLETED "
 #define DFS_EVENT_NOP_FINISHED "DFS-NOP-FINISHED "
 #define DFS_EVENT_PRE_CAC_EXPIRED "DFS-PRE-CAC-EXPIRED "
+#define DFS_EVENT_STA_UPDATE "DFS-STA-UPDATE "
 
 #define AP_CSA_FINISHED "AP-CSA-FINISHED "
 
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index 6eeb9c22e..dbd0137ac 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -5900,6 +5900,20 @@ enum wpa_event_type {
 	 * EVENT_LINK_RECONFIG - Notification that AP links removed
 	 */
 	EVENT_LINK_RECONFIG,
+
+	/**
+	 * EVENT_DFS_STA_CAC_SKIPPED - Notification that CAC has been skipped
+	 *
+	 * The channel in the notification is now marked as available.
+	 */
+	EVENT_DFS_STA_CAC_SKIPPED,
+
+	/**
+	 * EVENT_DFS_STA_CAC_EXPIRED - Notification that CAC has expired
+	 *
+	 * The channel in the notification is now marked as usable.
+	 */
+	EVENT_DFS_STA_CAC_EXPIRED,
 };
 
 
diff --git a/src/drivers/driver_nl80211_event.c b/src/drivers/driver_nl80211_event.c
index 4a12d749c..7889930a0 100644
--- a/src/drivers/driver_nl80211_event.c
+++ b/src/drivers/driver_nl80211_event.c
@@ -2529,6 +2529,12 @@ static void nl80211_radar_event(struct wpa_driver_nl80211_data *drv,
 	case NL80211_RADAR_CAC_STARTED:
 		wpa_supplicant_event(drv->ctx, EVENT_DFS_CAC_STARTED, &data);
 		break;
+	case NL80211_RADAR_STA_CAC_SKIPPED:
+		wpa_supplicant_event(drv->ctx, EVENT_DFS_STA_CAC_SKIPPED, &data);
+		break;
+	case NL80211_RADAR_STA_CAC_EXPIRED:
+		wpa_supplicant_event(drv->ctx, EVENT_DFS_STA_CAC_EXPIRED, &data);
+		break;
 	default:
 		wpa_printf(MSG_DEBUG, "nl80211: Unknown radar event %d "
 			   "received", event_type);
diff --git a/src/drivers/nl80211_copy.h b/src/drivers/nl80211_copy.h
index dced2c49d..8917d565b 100644
--- a/src/drivers/nl80211_copy.h
+++ b/src/drivers/nl80211_copy.h
@@ -6699,6 +6699,10 @@ enum nl80211_smps_mode {
  *	applicable for ETSI dfs domain where pre-CAC is valid for ever.
  * @NL80211_RADAR_CAC_STARTED: Channel Availability Check has been started,
  *	should be generated by HW if NL80211_EXT_FEATURE_DFS_OFFLOAD is enabled.
+ * @NL80211_RADAR_STA_CAC_SKIPPED: STA set the DFS state to available
+ *	when receiving CSA/assoc resp
+ * @NL80211_RADAR_STA_CAC_EXPIRED: STA set the DFS state to usable
+ *	when STA is disconnected or leaving the channel
  */
 enum nl80211_radar_event {
 	NL80211_RADAR_DETECTED,
@@ -6707,6 +6711,8 @@ enum nl80211_radar_event {
 	NL80211_RADAR_NOP_FINISHED,
 	NL80211_RADAR_PRE_CAC_EXPIRED,
 	NL80211_RADAR_CAC_STARTED,
+	NL80211_RADAR_STA_CAC_SKIPPED,
+	NL80211_RADAR_STA_CAC_EXPIRED,
 };
 
 /**
-- 
2.39.2

