Reinitialize autoscan on explicit reassocciate/reconnect command
This clears the exponential scan interval back to the base value when a reconnection is requested explicitly. Signed-hostap: Jouni Malinen <j@w1.fi>
This commit is contained in:
parent
d7ded75832
commit
c3d1223848
3 changed files with 13 additions and 0 deletions
|
@ -3984,6 +3984,7 @@ char * wpa_supplicant_ctrl_iface_process(struct wpa_supplicant *wpa_s,
|
|||
eapol_sm_notify_logoff(wpa_s->eapol, TRUE);
|
||||
} else if (os_strcmp(buf, "REASSOCIATE") == 0) {
|
||||
wpa_s->normal_scans = 0;
|
||||
wpa_supplicant_reinit_autoscan(wpa_s);
|
||||
if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED)
|
||||
reply_len = -1;
|
||||
else {
|
||||
|
@ -3993,6 +3994,7 @@ char * wpa_supplicant_ctrl_iface_process(struct wpa_supplicant *wpa_s,
|
|||
}
|
||||
} else if (os_strcmp(buf, "RECONNECT") == 0) {
|
||||
wpa_s->normal_scans = 0;
|
||||
wpa_supplicant_reinit_autoscan(wpa_s);
|
||||
if (wpa_s->wpa_state == WPA_INTERFACE_DISABLED)
|
||||
reply_len = -1;
|
||||
else if (wpa_s->disconnected) {
|
||||
|
|
|
@ -585,6 +585,16 @@ static void wpa_supplicant_stop_autoscan(struct wpa_supplicant *wpa_s)
|
|||
}
|
||||
|
||||
|
||||
void wpa_supplicant_reinit_autoscan(struct wpa_supplicant *wpa_s)
|
||||
{
|
||||
if (wpa_s->wpa_state == WPA_DISCONNECTED ||
|
||||
wpa_s->wpa_state == WPA_SCANNING) {
|
||||
autoscan_deinit(wpa_s);
|
||||
wpa_supplicant_start_autoscan(wpa_s);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* wpa_supplicant_set_state - Set current connection state
|
||||
* @wpa_s: Pointer to wpa_supplicant data
|
||||
|
|
|
@ -598,6 +598,7 @@ void wpa_supplicant_initiate_eapol(struct wpa_supplicant *wpa_s);
|
|||
void wpa_clear_keys(struct wpa_supplicant *wpa_s, const u8 *addr);
|
||||
void wpa_supplicant_req_auth_timeout(struct wpa_supplicant *wpa_s,
|
||||
int sec, int usec);
|
||||
void wpa_supplicant_reinit_autoscan(struct wpa_supplicant *wpa_s);
|
||||
void wpa_supplicant_set_state(struct wpa_supplicant *wpa_s,
|
||||
enum wpa_states state);
|
||||
struct wpa_ssid * wpa_supplicant_get_ssid(struct wpa_supplicant *wpa_s);
|
||||
|
|
Loading…
Reference in a new issue