From patchwork Mon Oct 29 09:13:41 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [3/3] wpa_supplicant: use a different function to enable a network From: "Spinadel, David" X-Patchwork-Id: 194924 Message-Id: <1351502021-10795-3-git-send-email-david.spinadel@intel.com> To: hostap@lists.shmoo.com Date: Mon, 29 Oct 2012 11:13:41 +0200 From: David Spinadel Use a function to enable a network, and then start scan if needed. Stop scheduled scan, if exists, before starting a regular scan. Change-Id: Idf11cb9904a2c5dfeff5218f896c24052f9eab35 Signed-off-by: David Spinadel --- wpa_supplicant/wpa_supplicant.c | 49 +++++++++----------------------------- 1 files changed, 12 insertions(+), 37 deletions(-) diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c index 358917f..6172500 100644 --- a/wpa_supplicant/wpa_supplicant.c +++ b/wpa_supplicant/wpa_supplicant.c @@ -1820,47 +1820,22 @@ void wpa_supplicant_enable_network(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid) { struct wpa_ssid *other_ssid; - int was_disabled; - if (ssid == NULL) { + if (ssid == NULL) for (other_ssid = wpa_s->conf->ssid; other_ssid; - other_ssid = other_ssid->next) { - if (other_ssid->disabled == 2) - continue; /* do not change persistent P2P group - * data */ - if (other_ssid == wpa_s->current_ssid && - other_ssid->disabled) - wpa_s->reassociate = 1; - - was_disabled = other_ssid->disabled; - - other_ssid->disabled = 0; - if (was_disabled) - wpas_clear_temp_disabled(wpa_s, other_ssid, 0); + other_ssid = other_ssid->next) + wpa_supplicant_enable_one_network(wpa_s, other_ssid); + else + wpa_supplicant_enable_one_network(wpa_s, ssid); - if (was_disabled != other_ssid->disabled) - wpas_notify_network_enabled_changed( - wpa_s, other_ssid); - } - if (wpa_s->reassociate) - wpa_supplicant_req_scan(wpa_s, 0, 0); - } else if (ssid->disabled && ssid->disabled != 2) { - if (wpa_s->current_ssid == NULL) { - /* - * Try to reassociate since there is no current - * configuration and a new network was made available. - */ - wpa_s->reassociate = 1; - wpa_supplicant_req_scan(wpa_s, 0, 0); + if (wpa_s->reassociate) { + if (wpa_s->sched_scanning) { + wpa_printf(MSG_DEBUG, + "Stop ongoing sched_scan to add new network to scan filters"); + wpa_supplicant_cancel_sched_scan(wpa_s); } - was_disabled = ssid->disabled; - - ssid->disabled = 0; - wpas_clear_temp_disabled(wpa_s, ssid, 1); - - if (was_disabled != ssid->disabled) - wpas_notify_network_enabled_changed(wpa_s, ssid); + wpa_supplicant_req_scan(wpa_s, 0, 0); } }