[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