[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