From 7c6e8d27e23f9c4dc2db390bd1828528f7daf2d5 Mon Sep 17 00:00:00 2001 From: Johannes Berg Date: Thu, 2 Jul 2009 18:26:18 +0200 Subject: [PATCH] --- yaml --- r: 158893 b: refs/heads/master c: 0a9b5e17952ec7ce938645a23ba29bcfdb66c8d9 h: refs/heads/master i: 158891: de00e6541e05ffc4f9a00027f3eed03dea4996e0 v: v3 --- [refs] | 2 +- trunk/net/wireless/mlme.c | 22 +++++++++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index 66f1427ffeda..0cdee4a2d1fb 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 19957bb399e2722719c0e20c9ae91cf8b6aaff04 +refs/heads/master: 0a9b5e17952ec7ce938645a23ba29bcfdb66c8d9 diff --git a/trunk/net/wireless/mlme.c b/trunk/net/wireless/mlme.c index 1a92bf7597bf..020f33b38467 100644 --- a/trunk/net/wireless/mlme.c +++ b/trunk/net/wireless/mlme.c @@ -278,6 +278,21 @@ int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev, struct cfg80211_internal_bss *bss; int i, err, slot = -1, nfree = 0; + if (wdev->current_bss && + memcmp(bssid, wdev->current_bss->pub.bssid, ETH_ALEN) == 0) + return -EALREADY; + + for (i = 0; i < MAX_AUTH_BSSES; i++) { + if (wdev->authtry_bsses[i] && + memcmp(bssid, wdev->authtry_bsses[i]->pub.bssid, + ETH_ALEN) == 0) + return -EALREADY; + if (wdev->auth_bsses[i] && + memcmp(bssid, wdev->auth_bsses[i]->pub.bssid, + ETH_ALEN) == 0) + return -EALREADY; + } + memset(&req, 0, sizeof(req)); req.ie = ie; @@ -290,13 +305,6 @@ int cfg80211_mlme_auth(struct cfg80211_registered_device *rdev, bss = bss_from_pub(req.bss); - for (i = 0; i < MAX_AUTH_BSSES; i++) { - if (bss == wdev->auth_bsses[i]) { - err = -EALREADY; - goto out; - } - } - for (i = 0; i < MAX_AUTH_BSSES; i++) { if (!wdev->auth_bsses[i] && !wdev->authtry_bsses[i]) { slot = i;