station: fix OWE scan logic with autoconnect

station_set_scan_results takes an autoconnect flag which was being
set true in both regular/quick autoconnect scans. Since OWE networks
are processed after setting the scan results IWD could end up
connecting to a network before all the OWE hidden networks are
populated.

To fix this regular/quick autoconnect results will set the flag to
false, then process OWE networks, then start autoconnect. If any
OWE network scans are pending station_autoconnect_start will fail
but will pick back up after the hidden OWE scan.
This commit is contained in:
James Prestwood 2022-01-19 11:03:45 -08:00 committed by Denis Kenzior
parent ac78076663
commit 73cd3578d9
1 changed files with 8 additions and 2 deletions

View File

@ -1231,10 +1231,13 @@ static bool new_scan_results(int err, struct l_queue *bss_list,
if (err)
return false;
station_set_scan_results(station, bss_list, freqs, true);
station_set_scan_results(station, bss_list, freqs, false);
station_process_owe_transition_networks(station);
station->autoconnect_can_start = true;
station_autoconnect_start(station);
return true;
}
@ -1303,10 +1306,13 @@ static bool station_quick_scan_results(int err, struct l_queue *bss_list,
if (err)
goto done;
station_set_scan_results(station, bss_list, freqs, true);
station_set_scan_results(station, bss_list, freqs, false);
station_process_owe_transition_networks(station);
station->autoconnect_can_start = true;
station_autoconnect_start(station);
done:
if (station->state == STATION_STATE_AUTOCONNECT_QUICK)
/*