Thread (19 messages) 19 messages, 3 authors, 2015-11-03
STALE3919d

[PATCH 06/10] mac80211: Fix local deauth while associating

From: Emmanuel Grumbach <hidden>
Date: 2015-10-25 09:00:06
Subsystem: mac80211, the rest · Maintainers: Johannes Berg, Linus Torvalds

From: Andrei Otcheretianski <redacted>

Local request to deauthenticate wasn't handled while associating, thus
the association could continue even when the user space required to
disconnect.

Signed-off-by: Andrei Otcheretianski <redacted>
Signed-off-by: Emmanuel Grumbach <redacted>
---
 net/mac80211/mlme.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 0d0ce5c..67f0387 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -4936,6 +4936,25 @@ int ieee80211_mgd_deauth(struct ieee80211_sub_if_data *sdata,
 		return 0;
 	}
 
+	if (ifmgd->assoc_data &&
+	    ether_addr_equal(ifmgd->assoc_data->bss->bssid, req->bssid)) {
+		sdata_info(sdata,
+			   "aborting association with %pM by local choice (Reason: %u=%s)\n",
+			   req->bssid, req->reason_code,
+			   ieee80211_get_reason_code_string(req->reason_code));
+
+		drv_mgd_prepare_tx(sdata->local, sdata);
+		ieee80211_send_deauth_disassoc(sdata, req->bssid,
+					       IEEE80211_STYPE_DEAUTH,
+					       req->reason_code, tx,
+					       frame_buf);
+		ieee80211_destroy_assoc_data(sdata, false);
+		ieee80211_report_disconnect(sdata, frame_buf,
+					    sizeof(frame_buf), true,
+					    req->reason_code);
+		return 0;
+	}
+
 	if (ifmgd->associated &&
 	    ether_addr_equal(ifmgd->associated->bssid, req->bssid)) {
 		sdata_info(sdata,
-- 
2.1.4
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help