Patchwork [3/3] wpa_supplicant: use a different function to enable a network

login
register
mail settings
Submitter Spinadel, David
Date Oct. 29, 2012, 9:13 a.m.
Message ID <1351502021-10795-3-git-send-email-david.spinadel@intel.com>
Download mbox | patch
Permalink /patch/194924/
State Changes Requested
Headers show

Comments

Spinadel, David - Oct. 29, 2012, 9:13 a.m.
From: David Spinadel <david.spinadel@intel.com>

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 <david.spinadel@intel.com>
---
 wpa_supplicant/wpa_supplicant.c |   49 +++++++++-----------------------------
 1 files changed, 12 insertions(+), 37 deletions(-)

Patch

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);
 	}
 }