Abort an ongoing scan before connect
Connect radio work is sometimes delayed for a considerable duration if there is an ongoing scan radio work. To avoid these delays abort the ongoing scan on that interface before queuing a connect request. Upon a scan done indication from the driver, connect radio work will be scheduled. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
4f30addb38
commit
4ead7cfd5d
4 changed files with 16 additions and 0 deletions
|
@ -2465,3 +2465,14 @@ int wpas_mac_addr_rand_scan_set(struct wpa_supplicant *wpa_s,
|
|||
wpa_s->mac_addr_rand_enable |= type;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
int wpas_abort_ongoing_scan(struct wpa_supplicant *wpa_s)
|
||||
{
|
||||
if (wpa_s->scan_work && wpa_s->own_scan_running) {
|
||||
wpa_dbg(wpa_s, MSG_DEBUG, "Abort an ongoing scan");
|
||||
return wpa_drv_abort_scan(wpa_s);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -54,5 +54,6 @@ void wpas_mac_addr_rand_scan_clear(struct wpa_supplicant *wpa_s,
|
|||
int wpas_mac_addr_rand_scan_set(struct wpa_supplicant *wpa_s,
|
||||
unsigned int type, const u8 *addr,
|
||||
const u8 *mask);
|
||||
int wpas_abort_ongoing_scan(struct wpa_supplicant *wpa_s);
|
||||
|
||||
#endif /* SCAN_H */
|
||||
|
|
|
@ -632,6 +632,8 @@ void sme_authenticate(struct wpa_supplicant *wpa_s,
|
|||
radio_remove_works(wpa_s, "sme-connect", 0);
|
||||
}
|
||||
|
||||
wpas_abort_ongoing_scan(wpa_s);
|
||||
|
||||
cwork = os_zalloc(sizeof(*cwork));
|
||||
if (cwork == NULL)
|
||||
return;
|
||||
|
|
|
@ -1706,6 +1706,8 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
|
|||
return;
|
||||
}
|
||||
|
||||
wpas_abort_ongoing_scan(wpa_s);
|
||||
|
||||
cwork = os_zalloc(sizeof(*cwork));
|
||||
if (cwork == NULL)
|
||||
return;
|
||||
|
|
Loading…
Reference in a new issue