From dda8da5352e042ff4fb1621c58624981ee00dce7 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 17/28] 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 e5ed645..d52a60e 100644
--- a/src/ap/dfs.c
+++ b/src/ap/dfs.c
@@ -1508,6 +1508,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 ede88b2..c1f9a0e 100644
--- a/src/ap/drv_callbacks.c
+++ b/src/ap/drv_callbacks.c
@@ -1805,6 +1805,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 */
 
 
@@ -2080,6 +2098,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 4ab2a1b..866ae0b 100644
--- a/src/common/wpa_ctrl.h
+++ b/src/common/wpa_ctrl.h
@@ -369,6 +369,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 2144cc4..faa4b7b 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -5666,6 +5666,20 @@ enum wpa_event_type {
 	 * Described in wpa_event_data.ch_switch.
 	 */
 	EVENT_LINK_CH_SWITCH_STARTED,
+
+	/**
+	 * 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 a45804c..67d9ce2 100644
--- a/src/drivers/driver_nl80211_event.c
+++ b/src/drivers/driver_nl80211_event.c
@@ -2217,6 +2217,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 12fc6a9..6493023 100644
--- a/src/drivers/nl80211_copy.h
+++ b/src/drivers/nl80211_copy.h
@@ -6621,6 +6621,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,
@@ -6629,6 +6633,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

