[PATCH 29/50] AP: Handle TX status for MLD AP
Andrei Otcheretianski
andrei.otcheretianski at intel.com
Wed Feb 15 15:08:43 PST 2023
From: Ilan Peer <ilan.peer at intel.com>
Signed-off-by: Ilan Peer <ilan.peer at intel.com>
---
src/ap/drv_callbacks.c | 22 ++++++++++++++++++----
1 file changed, 18 insertions(+), 4 deletions(-)
diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c
index 5869d71f44..8dc4ad1ffb 100644
--- a/src/ap/drv_callbacks.c
+++ b/src/ap/drv_callbacks.c
@@ -1534,12 +1534,26 @@ static void hostapd_mgmt_tx_cb(struct hostapd_data *hapd, const u8 *buf,
size_t len, u16 stype, int ok)
{
struct ieee80211_hdr *hdr;
- struct hostapd_data *orig_hapd = hapd;
+ struct hostapd_data *orig_hapd = hapd, *tmp_hapd;
hdr = (struct ieee80211_hdr *) buf;
- hapd = get_hapd_bssid(hapd->iface, get_hdr_bssid(hdr, len));
- if (!hapd)
- return;
+ tmp_hapd = get_hapd_bssid(hapd->iface, get_hdr_bssid(hdr, len));
+ if (tmp_hapd) {
+ hapd = tmp_hapd;
+ } else {
+ bool mld_ap_match = false;
+
+#ifdef CONFIG_IEEE80211BE
+ mld_ap_match = (hapd->conf->mld_ap &&
+ !os_memcmp(hapd->mld_addr,
+ get_hdr_bssid(hdr, len),
+ ETH_ALEN));
+#endif /* CONFIG_IEEE80211BE */
+
+ if (!mld_ap_match)
+ return;
+ }
+
if (hapd == HAPD_BROADCAST) {
if (stype != WLAN_FC_STYPE_ACTION || len <= 25 ||
buf[24] != WLAN_ACTION_PUBLIC)
--
2.38.1
More information about the Hostap
mailing list