[PATCH 5/7] wpa_supplicant: Forward beacons to the NAN module
Andrei Otcheretianski
andrei.otcheretianski at intel.com
Thu Oct 8 09:54:36 PDT 2026
From: Ilan Peer <ilan.peer at intel.com>
Add support for forwarding received beacons to the NAN
module when Instant Communication is enabled in the
configuration.
Signed-off-by: Ilan Peer <ilan.peer at intel.com>
---
wpa_supplicant/events.c | 5 +++++
wpa_supplicant/nan_supplicant.c | 18 ++++++++++++++++++
wpa_supplicant/nan_supplicant.h | 7 +++++++
3 files changed, 30 insertions(+)
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index b2d9558aa1..af401ba2b0 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -7602,6 +7602,11 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
break;
}
+ /* Beacons might also be needed for NAN */
+ if (stype == WLAN_FC_STYPE_BEACON)
+ wpas_nan_rx_beacon(wpa_s, mgmt,
+ data->rx_mgmt.frame_len);
+
if (wpa_s->ifmsh) {
mesh_mpm_mgmt_rx(wpa_s, &data->rx_mgmt);
break;
diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index d4534f5d7f..6758f58c5d 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -5697,6 +5697,24 @@ int wpas_nan_tx_status(struct wpa_supplicant *wpa_s,
#ifdef CONFIG_NAN
+void wpas_nan_rx_beacon(struct wpa_supplicant *wpa_s,
+ const struct ieee80211_mgmt *mgmt, size_t len)
+{
+ size_t hdr_len = IEEE80211_HDRLEN + sizeof(mgmt->u.beacon);
+
+ /*
+ * Process services advertised in beacons during Instant
+ * Communication.
+ */
+ if (!wpas_nan_ready(wpa_s) ||
+ !wpa_s->nan_cluster_config.instant_comm || len < hdr_len)
+ return;
+
+ nan_de_rx_beacon(wpa_s->nan_de, mgmt->sa, mgmt->bssid,
+ mgmt->u.beacon.variable, len - hdr_len);
+}
+
+
void wpas_nan_rx_naf(struct wpa_supplicant *wpa_s,
const struct ieee80211_mgmt *mgmt, size_t len)
{
diff --git a/wpa_supplicant/nan_supplicant.h b/wpa_supplicant/nan_supplicant.h
index 95c6e28c53..3b28bb8805 100644
--- a/wpa_supplicant/nan_supplicant.h
+++ b/wpa_supplicant/nan_supplicant.h
@@ -32,6 +32,8 @@ void wpas_nan_chan_evacuation(struct wpa_supplicant *wpa_s,
const struct nan_chan_evacuation_info *info);
int wpas_nan_sched_config_map(struct wpa_supplicant *wpa_s, const char *cmd);
int wpas_nan_ndp_request(struct wpa_supplicant *wpa_s, char *cmd);
+void wpas_nan_rx_beacon(struct wpa_supplicant *wpa_s,
+ const struct ieee80211_mgmt *mgmt, size_t len);
void wpas_nan_rx_naf(struct wpa_supplicant *wpa_s,
const struct ieee80211_mgmt *mgmt, size_t len);
void wpas_nan_flush_niks(struct wpa_supplicant *wpa_s);
@@ -111,6 +113,11 @@ static inline void wpas_nan_ulw_update(struct wpa_supplicant *wpa_s,
const u8 *ulw, size_t ulw_len)
{}
+static inline void wpas_nan_rx_beacon(struct wpa_supplicant *wpa_s,
+ const struct ieee80211_mgmt *mgmt,
+ size_t len)
+{}
+
static inline void wpas_nan_rx_naf(struct wpa_supplicant *wpa_s,
const struct ieee80211_mgmt *mgmt,
size_t len)
--
2.53.0
More information about the Hostap
mailing list