aboutsummaryrefslogtreecommitdiffstats
path: root/wpa_supplicant
diff options
context:
space:
mode:
authorEyal Shapira <eyal@wizery.com>2012-02-12 12:15:50 +0200
committerArik Nemtsov <arik@wizery.com>2012-08-02 13:01:43 +0300
commit405184457dfc6d3f8e50da841dff7c84efafc0ba (patch)
tree2e3f04e19897c7b1112d7086c3a1efa8685ee59a /wpa_supplicant
parent237c5f798c43589792704b16fe3f03f857808cae (diff)
downloadexternal_wpa_supplicant_8_ti-405184457dfc6d3f8e50da841dff7c84efafc0ba.zip
external_wpa_supplicant_8_ti-405184457dfc6d3f8e50da841dff7c84efafc0ba.tar.gz
external_wpa_supplicant_8_ti-405184457dfc6d3f8e50da841dff7c84efafc0ba.tar.bz2
wpa_s: add API to disable or enable roaming
If bgscan is configured then it will be disabled and enabled as well as roaming. This allows wpa_s users to disable roaming and bgscan when they wish (e.g. device screen is turned off/on) To disable send "SET roaming_disabled 1" and to enable replace with 0.
Diffstat (limited to 'wpa_supplicant')
-rw-r--r--wpa_supplicant/ctrl_iface.c7
-rw-r--r--wpa_supplicant/events.c16
-rw-r--r--wpa_supplicant/wpa_supplicant.c17
-rw-r--r--wpa_supplicant/wpa_supplicant_i.h2
4 files changed, 28 insertions, 14 deletions
diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c
index df2f57a..67967f2 100644
--- a/wpa_supplicant/ctrl_iface.c
+++ b/wpa_supplicant/ctrl_iface.c
@@ -285,6 +285,13 @@ static int wpa_supplicant_ctrl_iface_set(struct wpa_supplicant *wpa_s,
ret = wpa_drv_set_p2p_powersave(wpa_s, atoi(value), -1, -1);
} else if (os_strcasecmp(cmd, "bssid_filter") == 0) {
ret = set_bssid_filter(wpa_s, value);
+ } else if (os_strcasecmp(cmd, "roaming_disabled") == 0) {
+ int disabled = atoi(value);
+ wpa_printf(MSG_DEBUG, "roaming_disabled=%d", disabled);
+ if (disabled)
+ wpa_supplicant_disable_roaming(wpa_s);
+ else
+ wpa_supplicant_enable_roaming(wpa_s);
} else {
value[-1] = '=';
ret = wpa_config_process_global(wpa_s->conf, cmd, -1);
diff --git a/wpa_supplicant/events.c b/wpa_supplicant/events.c
index 14cf0ac..2e00815 100644
--- a/wpa_supplicant/events.c
+++ b/wpa_supplicant/events.c
@@ -2665,24 +2665,12 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
data->signal_change.current_noise,
data->signal_change.current_txrate);
break;
-
-
case EVENT_ROAMING_ENABLED:
-#ifdef CONFIG_BGSCAN
- if (wpa_s->roaming_disabled &&
- wpa_s->wpa_state == WPA_COMPLETED)
- wpa_supplicant_start_bgscan(wpa_s);
-#endif /* CONFIG_BGSCAN */
- wpa_s->roaming_disabled = 0;
+ wpa_supplicant_enable_roaming(wpa_s);
break;
-
case EVENT_ROAMING_DISABLED:
- wpa_s->roaming_disabled = 1;
-#ifdef CONFIG_BGSCAN
- wpa_supplicant_stop_bgscan(wpa_s);
-#endif /* CONFIG_BGSCAN */
+ wpa_supplicant_disable_roaming(wpa_s);
break;
-
case EVENT_INTERFACE_ENABLED:
wpa_dbg(wpa_s, MSG_DEBUG, "Interface was enabled");
if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED) {
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index a9fa9e9..5d866e8 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -575,6 +575,23 @@ void wpa_supplicant_stop_bgscan(struct wpa_supplicant *wpa_s)
#endif /* CONFIG_BGSCAN */
+void wpa_supplicant_enable_roaming(struct wpa_supplicant *wpa_s)
+{
+#ifdef CONFIG_BGSCAN
+ if (wpa_s->roaming_disabled &&
+ wpa_s->wpa_state == WPA_COMPLETED)
+ wpa_supplicant_start_bgscan(wpa_s);
+#endif /* CONFIG_BGSCAN */
+ wpa_s->roaming_disabled = 0;
+}
+
+void wpa_supplicant_disable_roaming(struct wpa_supplicant *wpa_s)
+{
+ wpa_s->roaming_disabled = 1;
+#ifdef CONFIG_BGSCAN
+ wpa_supplicant_stop_bgscan(wpa_s);
+#endif /* CONFIG_BGSCAN */
+}
static void wpa_supplicant_start_autoscan(struct wpa_supplicant *wpa_s)
{
diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h
index b675a63..c5d2f14 100644
--- a/wpa_supplicant/wpa_supplicant_i.h
+++ b/wpa_supplicant/wpa_supplicant_i.h
@@ -608,6 +608,8 @@ void wpa_supplicant_set_state(struct wpa_supplicant *wpa_s,
enum wpa_states state);
void wpa_supplicant_start_bgscan(struct wpa_supplicant *wpa_s);
void wpa_supplicant_stop_bgscan(struct wpa_supplicant *wpa_s);
+void wpa_supplicant_enable_roaming(struct wpa_supplicant *wpa_s);
+void wpa_supplicant_disable_roaming(struct wpa_supplicant *wpa_s);
struct wpa_ssid * wpa_supplicant_get_ssid(struct wpa_supplicant *wpa_s);
const char * wpa_supplicant_get_eap_mode(struct wpa_supplicant *wpa_s);
void wpa_supplicant_cancel_auth_timeout(struct wpa_supplicant *wpa_s);