[PATCH 63/92] NAN: Pass a schedule in pairing command

Andrei Otcheretianski andrei.otcheretianski at intel.com
Wed Apr 22 05:23:54 PDT 2026


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

When starting pairing, pass a local schedule to be used during
pairing.

Signed-off-by: Avraham Stern <avraham.stern at intel.com>
---
 src/nan/nan.c                   | 5 ++---
 src/nan/nan.h                   | 6 ++++--
 src/nan/nan_i.h                 | 2 ++
 src/nan/nan_pairing.c           | 5 ++++-
 wpa_supplicant/nan_supplicant.c | 4 +++-
 5 files changed, 15 insertions(+), 7 deletions(-)

diff --git a/src/nan/nan.c b/src/nan/nan.c
index d81a5568a2..6cf00a5bb5 100644
--- a/src/nan/nan.c
+++ b/src/nan/nan.c
@@ -1259,9 +1259,8 @@ nan_peer_get_committed_avail(const struct nan_data *nan,
 			     struct nan_peer_schedule *sched);
 
 
-static int nan_configure_peer_schedule(struct nan_data *nan,
-				       struct nan_peer *peer,
-				       const struct nan_schedule *local_sched)
+int nan_configure_peer_schedule(struct nan_data *nan, struct nan_peer *peer,
+				const struct nan_schedule *local_sched)
 {
 	int ret;
 	struct nan_dev_capa_entry *cur;
diff --git a/src/nan/nan.h b/src/nan/nan.h
index a9bdcf9d67..0a8629fad4 100644
--- a/src/nan/nan.h
+++ b/src/nan/nan.h
@@ -730,7 +730,8 @@ int nan_pairing_add_attrs(struct nan_data *nan_data, struct wpabuf *buf);
 int nan_pairing_initiate_pasn_auth(struct nan_data *nan_data, const u8 *addr,
 				   u8 auth_mode, int cipher, int handle,
 				   u8 peer_instance_id, bool responder,
-				   const char *password);
+				   const char *password,
+				   struct nan_schedule *sched);
 int nan_pairing_pasn_auth_tx_status(struct nan_data *nan, const u8 *data,
 				    size_t data_len, bool acked);
 int nan_pairing_auth_rx(struct nan_data *nan_data,
@@ -751,7 +752,8 @@ static inline
 int nan_pairing_initiate_pasn_auth(struct nan_data *nan_data, const u8 *addr,
 				   u8 auth_mode, int cipher, int handle,
 				   u8 peer_instance_id, bool responder,
-				   const char *password)
+				   const char *password,
+				   struct nan_schedule *sched)
 {
 	return -1;
 }
diff --git a/src/nan/nan_i.h b/src/nan/nan_i.h
index 667bc3b480..82f3cb0763 100644
--- a/src/nan/nan_i.h
+++ b/src/nan/nan_i.h
@@ -784,6 +784,8 @@ int nan_add_nira_attr(struct wpabuf *buf, const u8 *nira_tag,
 		      const u8 *nira_nonce);
 void nan_parse_peer_dev_capa_ext(struct nan_data *nan, struct nan_peer *peer,
 				 struct nan_attrs *attrs);
+int nan_configure_peer_schedule(struct nan_data *nan, struct nan_peer *peer,
+				const struct nan_schedule *local_sched);
 #ifdef CONFIG_PASN
 int nan_nira_get_tag_nonce(const struct nan_config *nan, u8 *nira_nonce,
 			   u8 *nira_tag);
diff --git a/src/nan/nan_pairing.c b/src/nan/nan_pairing.c
index 185a9e92a1..848b5ef928 100644
--- a/src/nan/nan_pairing.c
+++ b/src/nan/nan_pairing.c
@@ -492,7 +492,8 @@ static void nan_pairing_prepare_pasn_elems(struct nan_data *nan_data,
 int nan_pairing_initiate_pasn_auth(struct nan_data *nan_data, const u8 *addr,
 				   u8 auth_mode, int cipher, int handle,
 				   u8 peer_instance_id, bool responder,
-				   const char *password)
+				   const char *password,
+				   struct nan_schedule *sched)
 {
 	int ret = 0;
 	struct pasn_data *pasn;
@@ -545,6 +546,8 @@ int nan_pairing_initiate_pasn_auth(struct nan_data *nan_data, const u8 *addr,
 	peer->pairing.peer_instance_id = peer_instance_id;
 	peer->pairing.flags = 0;
 
+	nan_configure_peer_schedule(nan_data, peer, sched);
+
 	if (responder)
 		return 0;
 
diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index d48625519f..7fced01439 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -2787,13 +2787,15 @@ int wpas_nan_pair(struct wpa_supplicant *wpa_s, const u8 *peer_addr,
 		  bool responder, const char *password)
 {
 	int ret;
+	struct nan_schedule sched;
 
 	if (!wpas_nan_ready(wpa_s))
 		return -1;
 
+	wpas_nan_fill_ndp_schedule(wpa_s, &sched);
 	ret = nan_pairing_initiate_pasn_auth(wpa_s->nan, peer_addr, auth_mode,
 					     cipher, handle, peer_instance_id,
-					     responder, password);
+					     responder, password, &sched);
 	if (ret)
 		wpa_printf(MSG_DEBUG,
 			   "NAN PASN: Failed to start PASN authentication");
-- 
2.53.0




More information about the Hostap mailing list