Don't do broadcast SSID scans, if all configured SSIDs use scan_ssid=1. Improves background scanning in supplicant-managed roaming.

Index: wpa_supplicant-0.6.3/wpa_supplicant/scan.c
===================================================================
--- wpa_supplicant-0.6.3.orig/wpa_supplicant/scan.c	2008-07-09 18:53:28.000000000 +0200
+++ wpa_supplicant-0.6.3/wpa_supplicant/scan.c	2008-07-09 19:00:55.000000000 +0200
@@ -48,11 +48,23 @@
 	int enabled, scan_req = 0, ret;
 	const u8 *extra_ie = NULL;
 	size_t extra_ie_len = 0;
+	int scan_ssid_all = 1;
 
 	if (wpa_s->disconnected && !wpa_s->scan_req)
 		return;
 
 	enabled = 0;
+
+	/* check if all configured ssids should be scanned directly */
+	ssid = wpa_s->conf->ssid;
+	while (ssid) {
+		if (!ssid->scan_ssid) {
+			scan_ssid_all = 0;
+			break;
+		}
+		ssid = ssid->next;
+	}
+
 	ssid = wpa_s->conf->ssid;
 	while (ssid) {
 		if (!ssid->disabled) {
@@ -125,6 +137,10 @@
 		return;
 	}
 
+	if (scan_ssid_all && !ssid) {
+		ssid = wpa_s->conf->ssid;
+	}
+
 	wpa_printf(MSG_DEBUG, "Starting AP scan (%s SSID)",
 		   ssid ? "specific": "broadcast");
 	if (ssid) {
