From f875da04489f5906795a2a80ba6dbb9ddacb1fc8 Mon Sep 17 00:00:00 2001 From: Ben Greear Date: Fri, 16 Mar 2018 14:31:55 -0700 Subject: [PATCH] nl80211: Add MLME auth work-around for -EEXIST errno The Linux 4.9 kernel, at least, can return EEXIST when trying to auth a station that already exists. We have seen this bug in multiple places, but it is difficult to reproduce. Here is a link to someone else that appears to have hit this issue: https://github.com/greearb/ath10k-ct/issues/18 Signed-off-by: Ben Greear --- src/drivers/driver_nl80211.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c index ac06d20fc..7570d1215 100644 --- a/src/drivers/driver_nl80211.c +++ b/src/drivers/driver_nl80211.c @@ -3348,11 +3348,11 @@ retry: msg = NULL; if (ret) { wpa_dbg(drv->ctx, MSG_DEBUG, - "nl80211: MLME command failed (auth): ret=%d (%s)", - ret, strerror(-ret)); + "nl80211: MLME command failed (auth): count=%d ret=%d (%s)", + count, ret, strerror(-ret)); count++; - if (ret == -EALREADY && count == 1 && params->bssid && - !params->local_state_change) { + if ((ret == -EALREADY || ret == -EEXIST) && count == 1 && + params->bssid && !params->local_state_change) { /* * mac80211 does not currently accept new * authentication if we are already authenticated. As a