diff mbox series

[v2,24/44] AP: Handle TX status for MLD AP

Message ID 20230522193412.658666-25-andrei.otcheretianski@intel.com
State Accepted
Headers show
Series Add basic MLO support for AP | expand

Commit Message

Andrei Otcheretianski May 22, 2023, 7:33 p.m. UTC
From: Ilan Peer <ilan.peer@intel.com>

This allows proper TX status handling when MLD addressing is used.
Note, that the statuses are still not forwarded to the correct link BSS.
This will be handled in later patches.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
---
 src/ap/drv_callbacks.c | 22 ++++++++++++++++++----
 1 file changed, 18 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c
index 236a83f75f..0281264a62 100644
--- a/src/ap/drv_callbacks.c
+++ b/src/ap/drv_callbacks.c
@@ -1538,12 +1538,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)