[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