cfg80211: sme: deauthenticate on assoc failure
When the in-kernel SME gets an association failure from the AP we don't deauthenticate, and thus get into a very confused state which will lead to warnings later on. Fix this by actually deauthenticating when the AP indicates an association failure. (Brought to you by the hacking session at Kernel Summit 2009 in Tokyo, Japan. -- JWL) Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
2ef6e44409
commit
7d930bc336
@@ -62,6 +62,7 @@ void cfg80211_send_rx_assoc(struct net_device *dev, const u8 *buf, size_t len)
|
||||
u8 *ie = mgmt->u.assoc_resp.variable;
|
||||
int i, ieoffs = offsetof(struct ieee80211_mgmt, u.assoc_resp.variable);
|
||||
struct cfg80211_internal_bss *bss = NULL;
|
||||
bool need_connect_result = true;
|
||||
|
||||
wdev_lock(wdev);
|
||||
|
||||
@@ -94,6 +95,14 @@ void cfg80211_send_rx_assoc(struct net_device *dev, const u8 *buf, size_t len)
|
||||
}
|
||||
|
||||
WARN_ON(!bss);
|
||||
} else if (wdev->conn) {
|
||||
cfg80211_sme_failed_assoc(wdev);
|
||||
need_connect_result = false;
|
||||
/*
|
||||
* do not call connect_result() now because the
|
||||
* sme will schedule work that does it later.
|
||||
*/
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (!wdev->conn && wdev->sme_state == CFG80211_SME_IDLE) {
|
||||
|
Reference in New Issue
Block a user