[PATCH] wpa_supplicant DBus API: Update active/passive scan logic

Daniel Kurtz djkurtz at google.com
Wed Oct 6 15:00:25 EDT 2010


Currently the DBus Interface.Scan API is counter-intuitive.
It issues ProbeRequests when doing passive scans when channels are specified,
and does not issue probes for active scan.

This patch updates DBus API Scan logic per the 7 test cases listed below:

  1) Request:     Passive scan (all channels)
     Should be:   No ProbeRequests; Passive Scan results for all channels
     Previous:    1 ProbeRequest on all channels for both broadcast SSID and selected network (scan_ssid=1)
     This Patch:  1 ProbeRequest on all channels for both broadcast SSID and selected network (scan_ssid=1)

  2) Request:     Passive scan (1 channel)
     Should be:   No ProbeRequests; Passive Scan results for 1 channel (plus overlapping channels)
     Previous:    1 broadcast ProbeRequest on specified channel
     This Patch:  --Fixed--: No ProbeRequests; Passive Scan results for 1 channel (plus overlapping channels)

  3) Request:     Active scan with no SSIDs (all channels)
     Should be:   1 broadcast ProbeRequest on all channels
     Previous:    No ProbeRequests;  passive scan results for all channels
     This Patch:  --Fixed--: 1 broadcast ProbeRequest on all channels

  4) Request:     Active scan with no SSIDs (1 channel)
     Should be:   1 broadcast ProbeRequest on specified channel (plus overlapping channels)
     Previous:    No ProbeRequests; Passive scan results for specified channel (plus overlapping channels)
     This Patch:  --Fixed--: 1 broadcast ProbeRequest on specified channel (plus overlapping channels)

---
 wpa_supplicant/dbus/dbus_new_handlers.c |    6 ++++--
 1 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/wpa_supplicant/dbus/dbus_new_handlers.c b/wpa_supplicant/dbus/dbus_new_handlers.c
index b9f6a8d..765a158 100644
--- a/wpa_supplicant/dbus/dbus_new_handlers.c
+++ b/wpa_supplicant/dbus/dbus_new_handlers.c
@@ -1278,14 +1278,16 @@ DBusMessage * wpas_dbus_handler_scan(DBusMessage *message,
 				"passive scan");
 			goto out;
 		} else if (params.freqs && params.freqs[0]) {
-			/* wildcard ssid */
-			params.num_ssids++;
 			wpa_supplicant_trigger_scan(wpa_s, &params);
 		} else {
 			wpa_s->scan_req = 2;
 			wpa_supplicant_req_scan(wpa_s, 0, 0);
 		}
 	} else if (!os_strcmp(type, "active")) {
+		if (!params.num_ssids) {
+			/* Add wildcard ssid */
+			params.num_ssids++;
+		}
 		wpa_supplicant_trigger_scan(wpa_s, &params);
 	} else {
 		wpa_printf(MSG_DEBUG, "wpas_dbus_handler_scan[dbus]: "
-- 
1.7.1



More information about the HostAP mailing list