diff mbox series

nl80211: Add MLME assoc work-around for -EEXIST errno

Message ID 1520369745-26312-1-git-send-email-greearb@candelatech.com
State Changes Requested
Headers show
Series nl80211: Add MLME assoc work-around for -EEXIST errno | expand

Commit Message

Ben Greear March 6, 2018, 8:55 p.m. UTC
From: Ben Greear <greearb@candelatech.com>

The 4.9 kernel, at least, can return EEXIST when trying to add
a station that already exists.

Signed-off-by: Ben Greear <greearb@candelatech.com>
---
 src/drivers/driver_nl80211.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

Comments

Jouni Malinen March 11, 2018, 10:50 a.m. UTC | #1
On Tue, Mar 06, 2018 at 12:55:45PM -0800, greearb@candelatech.com wrote:
> The 4.9 kernel, at least, can return EEXIST when trying to add
> a station that already exists.

This is a bit confusing commit message since it talks about "assoc" and
adding a station while the code change is actually for authentication
(NL80211_CMD_AUTHENTICATE)..

What is the use case where you see the station (mac80211 STA entry, I'd
assume) being already there?

> diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
> @@ -3294,7 +3294,8 @@ retry:
>  		wpa_dbg(drv->ctx, MSG_INFO,
>  			"nl80211: MLME command failed (auth): count=%d ret=%d (%s)",
>  			count, ret, strerror(-ret));
> -		if (ret == -EALREADY && count == 1 && params->bssid &&
> +		if (((ret == -EALREADY) || (ret == -EEXIST))
> +		    && count == 1 && params->bssid &&
>  		    !params->local_state_change) {
>  			/* Nov 9, 2017:  Re-enable this...user saw endless loop of
>  			 * hitting this case.  Maybe the original reason I put this hack

This does not apply due to a missing "count++" and extra "Nov 9, 2017"
comment, i.e., the baseline is quite different compared to what exists
in hostap.git.
diff mbox series

Patch

diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 373f745..1fe0a5c 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -3294,7 +3294,8 @@  retry:
 		wpa_dbg(drv->ctx, MSG_INFO,
 			"nl80211: MLME command failed (auth): count=%d ret=%d (%s)",
 			count, ret, strerror(-ret));
-		if (ret == -EALREADY && count == 1 && params->bssid &&
+		if (((ret == -EALREADY) || (ret == -EEXIST))
+		    && count == 1 && params->bssid &&
 		    !params->local_state_change) {
 			/* Nov 9, 2017:  Re-enable this...user saw endless loop of
 			 * hitting this case.  Maybe the original reason I put this hack