[PATCH 04/92] NAN: improve and fix NAN device type checking
Andrei Otcheretianski
andrei.otcheretianski at intel.com
Wed Apr 22 05:22:55 PDT 2026
From: Benjamin Berg <benjamin.berg at intel.com>
There was a bug that a P2P device interface would be created for a NAN
data interface. Add a helper function that checks for either NAN
management or NAN data interface types and use that in various places.
Fix the checks before calls to wpas_p2p_add_p2pdev_interface and also
switch other places to use it.
Signed-off-by: Benjamin Berg <benjamin.berg at intel.com>
---
wpa_supplicant/events.c | 3 ++-
wpa_supplicant/wpa_supplicant.c | 2 +-
wpa_supplicant/wpa_supplicant_i.h | 9 +++++++++
3 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index 117d96a281..c559e52879 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -5310,6 +5310,7 @@ wpa_supplicant_event_interface_status(struct wpa_supplicant *wpa_s,
if (!wpa_s->global->p2p &&
!wpa_s->global->p2p_disabled &&
!wpa_s->conf->p2p_disabled &&
+ !wpas_is_nan_iface(wpa_s) &&
(wpa_s->drv_flags &
WPA_DRIVER_FLAGS_DEDICATED_P2P_DEVICE) &&
wpas_p2p_add_p2pdev_interface(
@@ -6899,7 +6900,7 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
break;
#endif /* CONFIG_PASN */
- if (wpa_s->nan_mgmt &&
+ if (wpas_is_nan_iface(wpa_s) &&
data->tx_status.type == WLAN_FC_TYPE_MGMT &&
data->tx_status.stype == WLAN_FC_STYPE_ACTION &&
wpas_nan_tx_status(wpa_s, data->tx_status.data,
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index 2b9512a15c..5414eab0fb 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -8372,7 +8372,7 @@ struct wpa_supplicant * wpa_supplicant_add_iface(struct wpa_global *global,
wpa_supplicant_set_state(wpa_s, WPA_DISCONNECTED);
#ifdef CONFIG_P2P
- if (!wpa_s->global->p2p && !iface->nan_mgmt &&
+ if (!wpa_s->global->p2p && !wpas_is_nan_iface(wpa_s) &&
!wpa_s->global->p2p_disabled && !wpa_s->conf->p2p_disabled &&
(wpa_s->drv_flags & WPA_DRIVER_FLAGS_DEDICATED_P2P_DEVICE) &&
wpas_p2p_add_p2pdev_interface(
diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h
index df449c7550..f69685004f 100644
--- a/wpa_supplicant/wpa_supplicant_i.h
+++ b/wpa_supplicant/wpa_supplicant_i.h
@@ -2177,4 +2177,13 @@ void wpas_update_dfs_ap_info(struct wpa_supplicant *wpa_s, int freq,
bool disconnect_evt);
void wpas_configure_frame_filters(struct wpa_supplicant *wpa_s);
+static inline bool wpas_is_nan_iface(struct wpa_supplicant *wpa_s)
+{
+#if defined(CONFIG_NAN)
+ return wpa_s->nan_mgmt || wpa_s->nan_data;
+#else
+ return false;
+#endif
+}
+
#endif /* WPA_SUPPLICANT_I_H */
--
2.53.0
More information about the Hostap
mailing list