aboutsummaryrefslogtreecommitdiffstats
path: root/src/drivers
diff options
context:
space:
mode:
authorEliad Peller <eliad@wizery.com>2012-02-13 23:58:08 +0200
committerArik Nemtsov <arik@wizery.com>2012-08-02 13:03:06 +0300
commitbeb879c8252d0edf2a79346ad9c531ef477d77a9 (patch)
tree14a1dccf984eb1f342a7c3ee597f20ce1b977bc0 /src/drivers
parenta523a2884fe83c111c8f3855bf36620c7d79b016 (diff)
downloadexternal_wpa_supplicant_8_ti-beb879c8252d0edf2a79346ad9c531ef477d77a9.zip
external_wpa_supplicant_8_ti-beb879c8252d0edf2a79346ad9c531ef477d77a9.tar.gz
external_wpa_supplicant_8_ti-beb879c8252d0edf2a79346ad9c531ef477d77a9.tar.bz2
initiate roaming on beacon_loss
Add wpa_s->roaming to indicate (forced) roaming request. set it on beacon_loss event. (no need to disconnect if there is no available ap, as the driver will send disassoc after some time) Signed-off-by: Eliad Peller <eliad@wizery.com>
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/driver.h1
-rw-r--r--src/drivers/driver_common.c2
-rw-r--r--src/drivers/driver_nl80211.c4
3 files changed, 7 insertions, 0 deletions
diff --git a/src/drivers/driver.h b/src/drivers/driver.h
index accc1e6..3933165 100644
--- a/src/drivers/driver.h
+++ b/src/drivers/driver.h
@@ -2879,6 +2879,7 @@ enum wpa_event_type {
*/
EVENT_ROAMING_DISABLED,
+ EVENT_START_ROAMING,
/**
* EVENT_INTERFACE_ENABLED - Notify that interface was enabled
*
diff --git a/src/drivers/driver_common.c b/src/drivers/driver_common.c
index c2af408..5e4dc89 100644
--- a/src/drivers/driver_common.c
+++ b/src/drivers/driver_common.c
@@ -27,6 +27,7 @@ void wpa_scan_results_free(struct wpa_scan_results *res)
const char * event_to_string(enum wpa_event_type event)
{
#define E2S(n) case EVENT_ ## n: return #n
+
switch (event) {
E2S(ASSOC);
E2S(DISASSOC);
@@ -80,6 +81,7 @@ const char * event_to_string(enum wpa_event_type event)
E2S(CH_SWITCH);
E2S(ROAMING_ENABLED);
E2S(ROAMING_DISABLED);
+ E2S(START_ROAMING);
}
return "UNKNOWN";
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 2806d0f..a06f6f1 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -1896,6 +1896,10 @@ static void nl80211_cqm_event(struct wpa_driver_nl80211_data *drv,
wpa_printf(MSG_DEBUG, "nl80211: Connection quality monitor "
"event: RSSI low");
ed.signal_change.above_threshold = 0;
+ } else if (event == NL80211_CQM_RSSI_BEACON_LOSS_EVENT) {
+ wpa_printf(MSG_DEBUG, "nl80211: Connection quality monitor "
+ "event: beacon loss!");
+ wpa_supplicant_event(drv->ctx, EVENT_START_ROAMING, &ed);
} else
return;