IBSS RSN: Wait for connection event and do not use auth timeout
Wait for connection (IBSS join completed) event before marking state completed. In addition, do not use the station mode authentication timeout since that can trigger full disconnection from IBSS when there is a timeout with just one of the peers.
This commit is contained in:
parent
0e379654b0
commit
9c972abb66
2 changed files with 6 additions and 3 deletions
|
@ -1046,7 +1046,9 @@ static void wpa_supplicant_event_assoc(struct wpa_supplicant *wpa_s,
|
||||||
eapol_sm_notify_portEnabled(wpa_s->eapol, TRUE);
|
eapol_sm_notify_portEnabled(wpa_s->eapol, TRUE);
|
||||||
wpa_s->eapol_received = 0;
|
wpa_s->eapol_received = 0;
|
||||||
if (wpa_s->key_mgmt == WPA_KEY_MGMT_NONE ||
|
if (wpa_s->key_mgmt == WPA_KEY_MGMT_NONE ||
|
||||||
wpa_s->key_mgmt == WPA_KEY_MGMT_WPA_NONE) {
|
wpa_s->key_mgmt == WPA_KEY_MGMT_WPA_NONE ||
|
||||||
|
(wpa_s->current_ssid &&
|
||||||
|
wpa_s->current_ssid->mode == IEEE80211_MODE_IBSS)) {
|
||||||
wpa_supplicant_cancel_auth_timeout(wpa_s);
|
wpa_supplicant_cancel_auth_timeout(wpa_s);
|
||||||
wpa_supplicant_set_state(wpa_s, WPA_COMPLETED);
|
wpa_supplicant_set_state(wpa_s, WPA_COMPLETED);
|
||||||
} else if (!ft_completed) {
|
} else if (!ft_completed) {
|
||||||
|
|
|
@ -1244,7 +1244,6 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
|
||||||
* per-BSSID authentication.
|
* per-BSSID authentication.
|
||||||
*/
|
*/
|
||||||
wpa_supplicant_cancel_auth_timeout(wpa_s);
|
wpa_supplicant_cancel_auth_timeout(wpa_s);
|
||||||
wpa_supplicant_set_state(wpa_s, WPA_COMPLETED);
|
|
||||||
#endif /* CONFIG_IBSS_RSN */
|
#endif /* CONFIG_IBSS_RSN */
|
||||||
} else {
|
} else {
|
||||||
/* Timeout for IEEE 802.11 authentication and association */
|
/* Timeout for IEEE 802.11 authentication and association */
|
||||||
|
@ -1774,7 +1773,9 @@ void wpa_supplicant_rx_eapol(void *ctx, const u8 *src_addr,
|
||||||
if (wpa_s->eapol_received == 0 &&
|
if (wpa_s->eapol_received == 0 &&
|
||||||
(!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE) ||
|
(!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_4WAY_HANDSHAKE) ||
|
||||||
!wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt) ||
|
!wpa_key_mgmt_wpa_psk(wpa_s->key_mgmt) ||
|
||||||
wpa_s->wpa_state != WPA_COMPLETED)) {
|
wpa_s->wpa_state != WPA_COMPLETED) &&
|
||||||
|
(wpa_s->current_ssid == NULL ||
|
||||||
|
wpa_s->current_ssid->mode != IEEE80211_MODE_IBSS)) {
|
||||||
/* Timeout for completing IEEE 802.1X and WPA authentication */
|
/* Timeout for completing IEEE 802.1X and WPA authentication */
|
||||||
wpa_supplicant_req_auth_timeout(
|
wpa_supplicant_req_auth_timeout(
|
||||||
wpa_s,
|
wpa_s,
|
||||||
|
|
Loading…
Reference in a new issue