aboutsummaryrefslogtreecommitdiffstats
path: root/wpa_supplicant
diff options
context:
space:
mode:
authorEyal Shapira <eyal@wizery.com>2012-02-20 00:31:07 +0200
committerArik Nemtsov <arik@wizery.com>2012-08-02 13:03:06 +0300
commit3eb6d0af511abbe2dd66b3aee3c54609d9fe571d (patch)
tree57c084e1fbb5e7e91a2ccca9765d258dabebd03a /wpa_supplicant
parent77402712f2b5d0903bb9d5c913bac9adcaeeff8c (diff)
downloadexternal_wpa_supplicant_8_ti-3eb6d0af511abbe2dd66b3aee3c54609d9fe571d.zip
external_wpa_supplicant_8_ti-3eb6d0af511abbe2dd66b3aee3c54609d9fe571d.tar.gz
external_wpa_supplicant_8_ti-3eb6d0af511abbe2dd66b3aee3c54609d9fe571d.tar.bz2
Prevent roaming to a different ESS while connected
While connected to a certain ESS prevent roaming to a different ESS AP even if its signal is better. This prevents an undesired switch between networks in this example scenario: 2 network profiles configured Net1 and Net2. We're already associated to an AP on the ESS Net1 and while walking with the device we get close to an AP from ESS Net2. Before this change a decision to switch to Net2 was made.
Diffstat (limited to 'wpa_supplicant')
-rw-r--r--wpa_supplicant/events.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index f834cb4..42c8793 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -665,6 +665,14 @@ static struct wpa_ssid * wpa_scan_res_match(struct wpa_supplicant *wpa_s,
return NULL;
}
+ if (wpa_s->wpa_state >= WPA_AUTHENTICATING &&
+ wpa_s->current_ssid &&
+ os_memcmp(wpa_s->current_ssid->ssid, ssid_, ssid_len) != 0) {
+ wpa_dbg(wpa_s, MSG_DEBUG, " skip - block roaming to "
+ "a different SSID while connected");
+ return NULL;
+ }
+
wpa = wpa_ie_len > 0 || rsn_ie_len > 0;
for (ssid = group; ssid; ssid = ssid->pnext) {