diff options
author | Eyal Shapira <eyal@wizery.com> | 2012-02-12 12:15:50 +0200 |
---|---|---|
committer | Arik Nemtsov <arik@wizery.com> | 2012-08-02 13:01:43 +0300 |
commit | 405184457dfc6d3f8e50da841dff7c84efafc0ba (patch) | |
tree | 2e3f04e19897c7b1112d7086c3a1efa8685ee59a /wpa_supplicant | |
parent | 237c5f798c43589792704b16fe3f03f857808cae (diff) | |
download | external_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.c | 7 | ||||
-rw-r--r-- | wpa_supplicant/events.c | 16 | ||||
-rw-r--r-- | wpa_supplicant/wpa_supplicant.c | 17 | ||||
-rw-r--r-- | wpa_supplicant/wpa_supplicant_i.h | 2 |
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); |