From b75cb2c2b3378439fd8bef85e3a303f83ffd9040 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 18/25] hostapd: mtk: 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 307a4e1..d082fe0 100644
--- a/src/ap/dfs.c
+++ b/src/ap/dfs.c
@@ -1503,6 +1503,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 c2556d2..25ba29c 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 09783cb..275f6b3 100644
--- a/src/ap/drv_callbacks.c
+++ b/src/ap/drv_callbacks.c
@@ -1790,6 +1790,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 */
 
 
@@ -2064,6 +2082,16 @@ void hostapd_wpa_event(void *ctx, enum wpa_event_type event,
 			break;
 		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 3435084..79c8a82 100644
--- a/src/common/wpa_ctrl.h
+++ b/src/common/wpa_ctrl.h
@@ -360,6 +360,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 3e034d7..82daef0 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -5317,6 +5317,20 @@ enum wpa_event_type {
 	 * EVENT_CCA_NOTIFY - Notification that CCA has completed
 	 */
 	EVENT_CCA_NOTIFY,
+
+	/**
+	 * 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 73bb7a4..ee922ac 100644
--- a/src/drivers/driver_nl80211_event.c
+++ b/src/drivers/driver_nl80211_event.c
@@ -1854,6 +1854,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 c4bf3ad..0937752 100644
--- a/src/drivers/nl80211_copy.h
+++ b/src/drivers/nl80211_copy.h
@@ -6431,6 +6431,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,
@@ -6439,6 +6443,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.18.0

