[PATCH 12/71] wpa_supplicant: Handle NAF tx status
Andrei Otcheretianski
andrei.otcheretianski at intel.com
Wed Apr 1 15:01:21 PDT 2026
Pass action frames TX status to nan_supplicant which in turn forwards it
to NAN module for NAFs.
Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski at intel.com>
---
wpa_supplicant/events.c | 10 ++++++++++
wpa_supplicant/nan_supplicant.c | 16 ++++++++++++++++
wpa_supplicant/nan_supplicant.h | 7 +++++++
3 files changed, 33 insertions(+)
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index 721b1aa231..9794b63f53 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -6892,6 +6892,16 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
data->tx_status.ack) == 0)
break;
#endif /* CONFIG_PASN */
+
+ if (wpa_s->nan_mgmt &&
+ data->tx_status.type == WLAN_FC_TYPE_MGMT &&
+ data->tx_status.stype == WLAN_FC_STYPE_ACTION) {
+ wpas_nan_tx_status(wpa_s, data->tx_status.data,
+ data->tx_status.data_len,
+ data->tx_status.ack);
+ break;
+ }
+
#ifdef CONFIG_AP
if (wpa_s->ap_iface == NULL) {
#ifdef CONFIG_OFFCHANNEL
diff --git a/wpa_supplicant/nan_supplicant.c b/wpa_supplicant/nan_supplicant.c
index 07f30b7d43..f487ec1d86 100644
--- a/wpa_supplicant/nan_supplicant.c
+++ b/wpa_supplicant/nan_supplicant.c
@@ -1971,3 +1971,19 @@ void wpas_nan_usd_state_change_notif(struct wpa_supplicant *wpa_s)
nan_de_config(ifs->nan_de, &cfg);
}
}
+
+
+void wpas_nan_tx_status(struct wpa_supplicant *wpa_s,
+ const u8 *data, size_t data_len, u8 acked)
+{
+ const struct ieee80211_mgmt *mgmt = (void *)data;
+
+ if (!wpas_nan_ready(wpa_s))
+ return;
+
+ wpa_printf(MSG_DEBUG, "NAN: TX status for frame len=%zu acked=%u",
+ data_len, acked);
+
+ if (!nan_tx_status(wpa_s->nan, mgmt->da, data, data_len, acked))
+ wpa_printf(MSG_DEBUG, "NAN: Processed NAF tx status");
+}
diff --git a/wpa_supplicant/nan_supplicant.h b/wpa_supplicant/nan_supplicant.h
index 9306e296e5..d22b9bf149 100644
--- a/wpa_supplicant/nan_supplicant.h
+++ b/wpa_supplicant/nan_supplicant.h
@@ -100,6 +100,8 @@ void wpas_nan_cancel_subscribe(struct wpa_supplicant *wpa_s,
int wpas_nan_transmit(struct wpa_supplicant *wpa_s, int handle,
const struct wpabuf *ssi, const struct wpabuf *elems,
const u8 *peer_addr, u8 req_instance_id);
+void wpas_nan_tx_status(struct wpa_supplicant *wpa_s,
+ const u8 *data, size_t data_len, u8 acked);
#else /* CONFIG_NAN_USD || CONFIG_NAN */
@@ -120,6 +122,11 @@ void wpas_nan_de_rx_sdf(struct wpa_supplicant *wpa_s, const u8 *src,
static inline void wpas_nan_de_flush(struct wpa_supplicant *wpa_s)
{}
+static inline void wpas_nan_tx_status(struct wpa_supplicant *wpa_s,
+ const u8 *data, size_t data_len,
+ u8 acked)
+{}
+
#endif /* CONFIG_NAN_USD || CONFIG_NAN */
/* NAN USD only */
--
2.53.0
More information about the Hostap
mailing list