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 <dimitrysh@google.com>
This commit is contained in:
parent
6a6afc02c0
commit
204c9ac4ee
1 changed files with 12 additions and 1 deletions
|
@ -2305,9 +2305,10 @@ static int wpa_supplicant_ctrl_iface_select_network(
|
||||||
{
|
{
|
||||||
int id;
|
int id;
|
||||||
struct wpa_ssid *ssid;
|
struct wpa_ssid *ssid;
|
||||||
|
char *pos;
|
||||||
|
|
||||||
/* cmd: "<network id>" or "any" */
|
/* cmd: "<network id>" or "any" */
|
||||||
if (os_strcmp(cmd, "any") == 0) {
|
if (os_strncmp(cmd, "any", 3) == 0) {
|
||||||
wpa_printf(MSG_DEBUG, "CTRL_IFACE: SELECT_NETWORK any");
|
wpa_printf(MSG_DEBUG, "CTRL_IFACE: SELECT_NETWORK any");
|
||||||
ssid = NULL;
|
ssid = NULL;
|
||||||
} else {
|
} 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);
|
wpa_supplicant_select_network(wpa_s, ssid);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in a new issue