From 204c9ac4eed9f0ad69497f2efcd0d095dfd6e61c Mon Sep 17 00:00:00 2001 From: Dmitry Shmidt Date: Thu, 3 Apr 2014 13:40:52 -0700 Subject: [PATCH] Extend select_network command with freq= to reduce scan time This allows a subset of channels to be specified for the scan used to find the network when the SELECT_NETWORK ctrl_iface command is issued. Signed-off-by: Dmitry Shmidt --- wpa_supplicant/ctrl_iface.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c index 65ee15e82..13c083081 100644 --- a/wpa_supplicant/ctrl_iface.c +++ b/wpa_supplicant/ctrl_iface.c @@ -2305,9 +2305,10 @@ static int wpa_supplicant_ctrl_iface_select_network( { int id; struct wpa_ssid *ssid; + char *pos; /* cmd: "" or "any" */ - if (os_strcmp(cmd, "any") == 0) { + if (os_strncmp(cmd, "any", 3) == 0) { wpa_printf(MSG_DEBUG, "CTRL_IFACE: SELECT_NETWORK any"); ssid = NULL; } else { @@ -2327,6 +2328,16 @@ static int wpa_supplicant_ctrl_iface_select_network( } } + pos = os_strstr(cmd, " freq="); + if (pos) { + int *freqs = freq_range_to_channel_list(wpa_s, pos + 6); + if (freqs) { + wpa_s->scan_req = MANUAL_SCAN_REQ; + os_free(wpa_s->manual_scan_freqs); + wpa_s->manual_scan_freqs = freqs; + } + } + wpa_supplicant_select_network(wpa_s, ssid); return 0;