[PATCH 41/97] NAN: Pass struct as parameter to wpas_nan_add_ndi_sta()

Andrei Otcheretianski andrei.otcheretianski at intel.com
Tue Apr 28 13:05:42 PDT 2026


From: Avraham Stern <avraham.stern at intel.com>

All the parameters of wpas_nan_add_ndi_sta() are part of the
nan_ndp_connection_params struct. Use the struct as the function
parameter to make it easier to pass more info to this function.

Signed-off-by: Avraham Stern <avraham.stern at intel.com>
---
 wpa_supplicant/nan_supplicant.c | 49 ++++++++++++++++-----------------
 1 file changed, 23 insertions(+), 26 deletions(-)

diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index 81ae22e95a..94a6aa1f0d 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -450,21 +450,21 @@ static int wpas_nan_configure_nmi_sta_capa(struct wpa_supplicant *wpa_s,
 
 
 static int wpas_nan_add_ndi_sta(struct wpa_supplicant *wpa_s,
-				const u8 *peer_nmi, const u8 *local_ndi,
-				const u8 *peer_ndi, bool install_keys,
-				bool first_ndp, bool new_ndi_sta)
+				struct nan_ndp_connection_params *params)
 {
 	u8 tk[WPA_TK_MAX_LEN];
 	size_t tk_len;
 	enum nan_cipher_suite_id csid;
 	struct wpa_supplicant *ndi_wpa_s;
 	struct hostapd_sta_add_params sta_params;
+	const u8 *peer_nmi = params->ndp_id.peer_nmi;
+	const u8 *peer_ndi = params->peer_ndi;
 
-	ndi_wpa_s = wpas_nan_get_ndi_iface(wpa_s, local_ndi);
+	ndi_wpa_s = wpas_nan_get_ndi_iface(wpa_s, params->local_ndi);
 	if (!ndi_wpa_s) {
 		wpa_printf(MSG_INFO,
 			   "NAN: No NDI interface found for " MACSTR,
-			   MAC2STR(local_ndi));
+			   MAC2STR(params->local_ndi));
 		return -1;
 	}
 
@@ -472,21 +472,21 @@ static int wpas_nan_add_ndi_sta(struct wpa_supplicant *wpa_s,
 	 * the first NDP. After that it is assumed that capablities are not
 	 * changing.
 	 */
-	if (first_ndp &&
+	if (params->first_ndp &&
 	    wpas_nan_configure_nmi_sta_capa(wpa_s, peer_nmi)) {
 		wpa_printf(MSG_INFO,
 			   "NAN: Failed to configure NMI station capabilities");
 		return -1;
 	}
 
-	if (new_ndi_sta) {
+	if (params->new_ndi_sta) {
 		os_memset(&sta_params, 0, sizeof(sta_params));
 		sta_params.addr = peer_ndi;
 		sta_params.nmi_addr = peer_nmi;
 		sta_params.flags = WPA_STA_AUTHENTICATED | WPA_STA_ASSOCIATED;
 
 		/* Set MFP flag early, to prevent races until keys are installed */
-		if (install_keys)
+		if (params->install_keys)
 			sta_params.flags |= WPA_STA_MFP;
 		else
 			sta_params.flags |= WPA_STA_AUTHORIZED;
@@ -502,7 +502,7 @@ static int wpas_nan_add_ndi_sta(struct wpa_supplicant *wpa_s,
 			   "NAN: NDI station already exists for peer " MACSTR,
 			   MAC2STR(peer_ndi));
 		/* Set MFP flag if keys will be installed (security upgrade) */
-		if (install_keys &&
+		if (params->install_keys &&
 		    wpa_drv_sta_set_flags(ndi_wpa_s, peer_ndi, WPA_STA_MFP,
 					  WPA_STA_MFP, ~0)) {
 			wpa_printf(MSG_INFO,
@@ -512,20 +512,20 @@ static int wpas_nan_add_ndi_sta(struct wpa_supplicant *wpa_s,
 		}
 	}
 
-	if (!install_keys) {
-		if (new_ndi_sta)
-			wpa_printf(MSG_DEBUG,
-				   "NAN: NDI station added without keys for peer "
-				   MACSTR, MAC2STR(peer_ndi));
-		else
-			wpa_printf(MSG_DEBUG,
-				   "NAN: Using existing NDI station without new keys for peer "
-				   MACSTR, MAC2STR(peer_ndi));
+	wpa_printf(MSG_DEBUG, "NAN: NDI station for peer " MACSTR " %s",
+		   MAC2STR(peer_ndi),
+		   params->new_ndi_sta ? "added" : "already exists");
+
+	if (!params->install_keys) {
+		wpa_printf(MSG_DEBUG,
+			   "NAN: NDI station %s without keys for peer " MACSTR,
+			   params->new_ndi_sta ? "added" : "ready",
+			   MAC2STR(peer_ndi));
 		goto out_success;
 	}
 
-	if (nan_peer_get_tk(wpa_s->nan, peer_nmi, peer_ndi, local_ndi, tk,
-			    &tk_len, &csid)) {
+	if (nan_peer_get_tk(wpa_s->nan, peer_nmi, peer_ndi, params->local_ndi,
+			    tk, &tk_len, &csid)) {
 		wpa_printf(MSG_INFO, "NAN: Failed to get TK for NDI station");
 		goto remove_sta;
 	}
@@ -563,8 +563,8 @@ out_success:
 	return 0;
 
 remove_sta:
-	if (new_ndi_sta)
-		wpa_drv_sta_remove(ndi_wpa_s, peer_ndi);
+	if (params->new_ndi_sta)
+		wpa_drv_sta_remove(ndi_wpa_s, params->peer_ndi);
 	return -1;
 }
 
@@ -616,10 +616,7 @@ static int wpas_nan_ndp_connected_cb(void *ctx,
 {
 	struct wpa_supplicant *wpa_s = ctx;
 
-	if (wpas_nan_add_ndi_sta(wpa_s, params->ndp_id.peer_nmi,
-				 params->local_ndi, params->peer_ndi,
-				 params->install_keys,
-				 params->first_ndp, params->new_ndi_sta) < 0) {
+	if (wpas_nan_add_ndi_sta(wpa_s, params) < 0) {
 		wpa_printf(MSG_INFO,
 			   "NAN: Failed to add NDI station for NDP connection");
 		return -1;
-- 
2.53.0




More information about the Hostap mailing list