From 3dbfb28cfec394b08d1b79f43b9bf85dc3a48c83 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Fri, 8 Apr 2016 19:18:33 +0300 Subject: [PATCH] Allow AP to disconnect STA without sending Deauth/Disassoc frame The optional tx=0 parameter can be added to the hostapd DEAUTHENTICATE/DISASSOCIATE command to request disconnection without transmitting the Deauthentication/Disassociation frame to the STA. Signed-off-by: Jouni Malinen --- src/ap/ctrl_iface_ap.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/ap/ctrl_iface_ap.c b/src/ap/ctrl_iface_ap.c index 8a9965bf9..fffb1753a 100644 --- a/src/ap/ctrl_iface_ap.c +++ b/src/ap/ctrl_iface_ap.c @@ -352,7 +352,10 @@ int hostapd_ctrl_iface_deauthenticate(struct hostapd_data *hapd, } #endif /* CONFIG_P2P_MANAGER */ - hostapd_drv_sta_deauth(hapd, addr, reason); + if (os_strstr(txtaddr, " tx=0")) + hostapd_drv_sta_remove(hapd, addr); + else + hostapd_drv_sta_deauth(hapd, addr, reason); sta = ap_get_sta(hapd, addr); if (sta) ap_sta_deauthenticate(hapd, sta, reason); @@ -412,7 +415,10 @@ int hostapd_ctrl_iface_disassociate(struct hostapd_data *hapd, } #endif /* CONFIG_P2P_MANAGER */ - hostapd_drv_sta_disassoc(hapd, addr, reason); + if (os_strstr(txtaddr, " tx=0")) + hostapd_drv_sta_remove(hapd, addr); + else + hostapd_drv_sta_disassoc(hapd, addr, reason); sta = ap_get_sta(hapd, addr); if (sta) ap_sta_disassociate(hapd, sta, reason);