[PATCH 11/18] NAN: Advertise the established NDC in SDFs

Andrei Otcheretianski andrei.otcheretianski at intel.com
Mon Oct 12 08:46:45 PDT 2026


Advertise the NDC in the SDFs, so that peers can learn it before
NDL negotiation starts and align their own availability with it.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski at intel.com>
---
 src/nan/nan.h                   |  2 ++
 src/nan/nan_ndl.c               | 14 +++++++++++---
 wpa_supplicant/nan_supplicant.c |  6 ++++++
 3 files changed, 19 insertions(+), 3 deletions(-)

diff --git a/src/nan/nan.h b/src/nan/nan.h
index 5de815b920..d44d5f51ba 100644
--- a/src/nan/nan.h
+++ b/src/nan/nan.h
@@ -962,6 +962,8 @@ bool nan_peer_sched_conflicts_with_ndc(struct nan_data *nan,
 				       const struct nan_time_bitmap *ndc);
 bool nan_tbm_equal(struct nan_data *nan, const struct nan_time_bitmap *a,
 		   const struct nan_time_bitmap *b);
+void nan_write_ndc_attr(struct wpabuf *buf, const u8 *ndc_id, u8 map_id,
+			const struct nan_time_bitmap *ndc, bool selected);
 int nan_crypto_derive_nd_pmk(const char *pwd, const u8 *service_id,
 			     enum nan_cipher_suite_id csid,
 			     const u8 *peer_nmi, u8 *nd_pmk);
diff --git a/src/nan/nan_ndl.c b/src/nan/nan_ndl.c
index 410b744476..7d3cc69301 100644
--- a/src/nan/nan_ndl.c
+++ b/src/nan/nan_ndl.c
@@ -1718,9 +1718,17 @@ int nan_ndl_add_ndl_attr(struct nan_data *nan, const struct nan_peer *peer,
 }
 
 
-static void nan_write_ndc_attr(struct wpabuf *buf, const u8 *ndc_id,
-			       u8 map_id, const struct nan_time_bitmap *ndc,
-			       bool selected)
+/**
+ * nan_write_ndc_attr - Write an NDC attribute to a frame
+ * @buf: Frame buffer to which the attribute would be added
+ * @ndc_id: The NDC ID
+ * @map_id: The NDC map ID
+ * @ndc: The NDC time bitmap
+ * @selected: Whether to set the Selected NDC flag
+ */
+void nan_write_ndc_attr(struct wpabuf *buf, const u8 *ndc_id,
+			u8 map_id, const struct nan_time_bitmap *ndc,
+			bool selected)
 {
 	u16 sched_entry_ctrl = 0;
 
diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index 68ada904f2..39b61c84c8 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -4426,6 +4426,12 @@ static void wpas_nan_de_add_extra_attrs(void *ctx, struct wpabuf *buf)
 					 map_ids, sched.n_chans,
 					 sched.chans, buf, true);
 
+	/* Selected flag is not set in SDFs */
+	if (wpa_s->nan_ndc.valid)
+		nan_write_ndc_attr(buf, wpa_s->nan_ndc.id,
+				   wpa_s->nan_ndc.map_id, &wpa_s->nan_ndc.tbm,
+				   false);
+
 	if (!wpa_s->nan_ulw_attr)
 		return;
 
-- 
2.53.0




More information about the Hostap mailing list