The WLAN_REASON_PREV_AUTH_NOT_VALID DEAUTH message is sent to remove current successful authentications, not to to abort a new authentication attempts. Therefore, filter this reason code out when deciding whether to remove authtry_bsses[] entries. This is the least invasive change which prevents this issue from appearing. It doesn't address the fact that the mac80211 code still retries authentications if it is DEAUTHed for some other reason during authentication. If one of those retries succeeds the client can do nothing with it sicne authtry_bsses[] has been cleared. Signed-off-by: Paul Stewart <pstew@xxxxxxxxxxxx> --- net/wireless/mlme.c | 8 ++++---- 1 files changed, 4 insertions(+), 4 deletions(-) diff --git a/net/wireless/mlme.c b/net/wireless/mlme.c index 493b939..48e965d 100644 --- a/net/wireless/mlme.c +++ b/net/wireless/mlme.c @@ -150,6 +150,7 @@ void __cfg80211_send_deauth(struct net_device *dev, const u8 *bssid = mgmt->bssid; int i; bool found = false, was_current = false; + u16 reason_code = le16_to_cpu(mgmt->u.deauth.reason_code); ASSERT_WDEV_LOCK(wdev); @@ -170,7 +171,9 @@ void __cfg80211_send_deauth(struct net_device *dev, break; } if (wdev->authtry_bsses[i] && - memcmp(wdev->authtry_bsses[i]->pub.bssid, bssid, ETH_ALEN) == 0) { + memcmp(wdev->authtry_bsses[i]->pub.bssid, bssid, + ETH_ALEN) == 0 && + reason_code != WLAN_REASON_PREV_AUTH_NOT_VALID) { cfg80211_unhold_bss(wdev->authtry_bsses[i]); cfg80211_put_bss(&wdev->authtry_bsses[i]->pub); wdev->authtry_bsses[i] = NULL; @@ -185,11 +188,8 @@ void __cfg80211_send_deauth(struct net_device *dev, nl80211_send_deauth(rdev, dev, buf, len, GFP_KERNEL); if (wdev->sme_state == CFG80211_SME_CONNECTED && was_current) { - u16 reason_code; bool from_ap; - reason_code = le16_to_cpu(mgmt->u.deauth.reason_code); - from_ap = memcmp(mgmt->sa, dev->dev_addr, ETH_ALEN) != 0; __cfg80211_disconnected(dev, NULL, 0, reason_code, from_ap); } else if (wdev->sme_state == CFG80211_SME_CONNECTING) { -- 1.7.3.1 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html