[PATCH 3/8] AP: Use AP MLD address when sending de-authentication and disassociation
Andrei Otcheretianski
andrei.otcheretianski at intel.com
Wed Dec 13 06:04:07 PST 2023
From: Ilan Peer <ilan.peer at intel.com>
Signed-off-by: Ilan Peer <ilan.peer at intel.com>
---
src/ap/ap_drv_ops.c | 23 ++++++++++++++++++++---
1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/src/ap/ap_drv_ops.c b/src/ap/ap_drv_ops.c
index 11a4eac822..fd0f97748e 100644
--- a/src/ap/ap_drv_ops.c
+++ b/src/ap/ap_drv_ops.c
@@ -832,15 +832,21 @@ int hostapd_drv_sta_deauth(struct hostapd_data *hapd,
const u8 *addr, int reason)
{
int link_id = -1;
+ const u8 *own_addr = hapd->own_addr;
#ifdef CONFIG_IEEE80211BE
- if (hapd->conf->mld_ap)
+ if (hapd->conf->mld_ap) {
+ struct sta_info *sta = ap_get_sta(hapd, addr);
+
link_id = hapd->mld_link_id;
+ if (sta && sta->mld_info.mld_sta)
+ own_addr = hapd->mld_addr;
+ }
#endif /* CONFIG_IEEE80211BE */
if (!hapd->driver || !hapd->driver->sta_deauth || !hapd->drv_priv)
return 0;
- return hapd->driver->sta_deauth(hapd->drv_priv, hapd->own_addr, addr,
+ return hapd->driver->sta_deauth(hapd->drv_priv, own_addr, addr,
reason, link_id);
}
@@ -848,9 +854,20 @@ int hostapd_drv_sta_deauth(struct hostapd_data *hapd,
int hostapd_drv_sta_disassoc(struct hostapd_data *hapd,
const u8 *addr, int reason)
{
+ const u8 *own_addr = hapd->own_addr;
+
+#ifdef CONFIG_IEEE80211BE
+ if (hapd->conf->mld_ap) {
+ struct sta_info *sta = ap_get_sta(hapd, addr);
+
+ if (sta && sta->mld_info.mld_sta)
+ own_addr = hapd->mld_addr;
+ }
+#endif /* CONFIG_IEEE80211BE */
+
if (!hapd->driver || !hapd->driver->sta_disassoc || !hapd->drv_priv)
return 0;
- return hapd->driver->sta_disassoc(hapd->drv_priv, hapd->own_addr, addr,
+ return hapd->driver->sta_disassoc(hapd->drv_priv, own_addr, addr,
reason);
}
--
2.38.1
More information about the Hostap
mailing list