[PATCH 07/71] wpa_supplicant: Configure NAN capabilities to NAN module

Andrei Otcheretianski andrei.otcheretianski at intel.com
Wed Apr 1 15:01:16 PDT 2026


Store NAN capabilities in wpa_supplicant and configure NAN module
accordingly.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski at intel.com>
---
 wpa_supplicant/nan_supplicant.c   | 20 ++++++++++----------
 wpa_supplicant/wpa_supplicant.c   |  3 ++-
 wpa_supplicant/wpa_supplicant_i.h |  2 +-
 3 files changed, 13 insertions(+), 12 deletions(-)

diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index 1eac1fb787..2706b45afd 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -68,8 +68,8 @@ int wpas_nan_init(struct wpa_supplicant *wpa_s)
 	struct nan_config nan;
 
 	if (!(wpa_s->drv_flags2 & WPA_DRIVER_FLAGS2_SUPPORT_NAN) ||
-	    !(wpa_s->nan_drv_flags & WPA_DRIVER_FLAGS_NAN_SUPPORT_SYNC_CONFIG))
-	{
+	    !(wpa_s->nan_capa.drv_flags &
+	      WPA_DRIVER_FLAGS_NAN_SUPPORT_SYNC_CONFIG)) {
 		wpa_printf(MSG_INFO, "NAN: Driver does not support NAN");
 		return -1;
 	}
@@ -92,14 +92,14 @@ int wpas_nan_init(struct wpa_supplicant *wpa_s)
 		((1 << NAN_CDW_INFO_5G_POS) & NAN_CDW_INFO_5G_MASK);
 
 	nan.dev_capa.supported_bands = NAN_DEV_CAPA_SBAND_2G;
-	if (wpa_s->nan_drv_flags &
+	if (wpa_s->nan_capa.drv_flags &
 	    WPA_DRIVER_FLAGS_NAN_SUPPORT_DUAL_BAND)
 		nan.dev_capa.supported_bands |= NAN_DEV_CAPA_SBAND_5G;
 
-	/* TODO: set based on driver capabilities */
-	nan.dev_capa.op_mode = NAN_DEV_CAPA_OP_MODE_PHY_MODE_VHT |
-		NAN_DEV_CAPA_OP_MODE_PHY_MODE_HE |
-		NAN_DEV_CAPA_OP_MODE_HE_VHT_160;
+	nan.dev_capa.op_mode = wpa_s->nan_capa.op_modes;
+	nan.dev_capa.n_antennas = wpa_s->nan_capa.num_antennas;
+	nan.dev_capa.channel_switch_time = wpa_s->nan_capa.max_channel_switch_time;
+	nan.dev_capa.capa = wpa_s->nan_capa.dev_capa;
 
 	wpa_s->nan = nan_init(&nan);
 	if (!wpa_s->nan) {
@@ -135,7 +135,7 @@ int wpas_nan_init(struct wpa_supplicant *wpa_s)
 	 * active subscribe
 	 */
 	wpa_s->nan_config.enable_dw_notif =
-		!!(wpa_s->nan_drv_flags &
+		!!(wpa_s->nan_capa.drv_flags &
 		   WPA_DRIVER_FLAGS_NAN_SUPPORT_USERSPACE_DE);
 
 	return 0;
@@ -750,7 +750,7 @@ int wpas_nan_publish(struct wpa_supplicant *wpa_s, const char *service_name,
 
 #ifdef CONFIG_NAN
 	if (params->sync) {
-		if (!(wpa_s->nan_drv_flags &
+		if (!(wpa_s->nan_capa.drv_flags &
 		      WPA_DRIVER_FLAGS_NAN_SUPPORT_USERSPACE_DE)) {
 			wpa_printf(MSG_INFO,
 				   "NAN: Cannot advertise sync service, driver does not support user space DE");
@@ -910,7 +910,7 @@ int wpas_nan_subscribe(struct wpa_supplicant *wpa_s,
 
 #ifdef CONFIG_NAN
 	if (params->sync) {
-		if (!(wpa_s->nan_drv_flags &
+		if (!(wpa_s->nan_capa.drv_flags &
 		      WPA_DRIVER_FLAGS_NAN_SUPPORT_USERSPACE_DE)) {
 			wpa_printf(MSG_INFO,
 				   "NAN: Cannot subscribe sync, user space DE is not supported");
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index f0e68eb991..69db55dd25 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -8010,7 +8010,8 @@ static int wpa_supplicant_init_iface(struct wpa_supplicant *wpa_s,
 		return -1;
 
 #ifdef CONFIG_NAN
-	wpa_s->nan_drv_flags = capa.nan_capa.drv_flags;
+	os_memcpy(&wpa_s->nan_capa, &capa.nan_capa,
+		  sizeof(wpa_s->nan_capa));
 #endif /* CONFIG_NAN */
 
 	if (wpa_supplicant_init_eapol(wpa_s) < 0)
diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h
index 26ae918bac..a4b88a5a96 100644
--- a/wpa_supplicant/wpa_supplicant_i.h
+++ b/wpa_supplicant/wpa_supplicant_i.h
@@ -1722,7 +1722,7 @@ struct wpa_supplicant {
 	bool nan_mgmt;
 
 #ifdef CONFIG_NAN
-	u32 nan_drv_flags;
+	struct nan_capa nan_capa;
 	struct nan_data *nan;
 	struct nan_cluster_config nan_config;
 #endif /* CONFIG_NAN */
-- 
2.53.0




More information about the Hostap mailing list