OWE: Try another group only on association rejection with status 77
Do not change the OWE group if association is rejected for any other reason than WLAN_STATUS_FINITE_CYCLIC_GROUP_NOT_SUPPORTED to avoid unnecessary latency in cases where the APs reject association, e.g., for load balancing reasons. Signed-off-by: Ashok Kumar <aponnaia@codeaurora.org>
This commit is contained in:
parent
8fc6d88465
commit
698c9e2021
3 changed files with 11 additions and 2 deletions
|
@ -4085,6 +4085,7 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
|
||||||
}
|
}
|
||||||
#endif /* CONFIG_TESTING_OPTIONS */
|
#endif /* CONFIG_TESTING_OPTIONS */
|
||||||
wpa_supplicant_event_assoc(wpa_s, data);
|
wpa_supplicant_event_assoc(wpa_s, data);
|
||||||
|
wpa_s->assoc_status_code = WLAN_STATUS_SUCCESS;
|
||||||
if (data &&
|
if (data &&
|
||||||
(data->assoc_info.authorized ||
|
(data->assoc_info.authorized ||
|
||||||
(!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) &&
|
(!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) &&
|
||||||
|
|
|
@ -1520,14 +1520,18 @@ void sme_associate(struct wpa_supplicant *wpa_s, enum wpas_mode mode,
|
||||||
|
|
||||||
if (wpa_s->current_ssid && wpa_s->current_ssid->owe_group) {
|
if (wpa_s->current_ssid && wpa_s->current_ssid->owe_group) {
|
||||||
group = wpa_s->current_ssid->owe_group;
|
group = wpa_s->current_ssid->owe_group;
|
||||||
} else {
|
} else if (wpa_s->assoc_status_code ==
|
||||||
|
WLAN_STATUS_FINITE_CYCLIC_GROUP_NOT_SUPPORTED) {
|
||||||
if (wpa_s->last_owe_group == 19)
|
if (wpa_s->last_owe_group == 19)
|
||||||
group = 20;
|
group = 20;
|
||||||
else if (wpa_s->last_owe_group == 20)
|
else if (wpa_s->last_owe_group == 20)
|
||||||
group = 21;
|
group = 21;
|
||||||
else
|
else
|
||||||
group = OWE_DH_GROUP;
|
group = OWE_DH_GROUP;
|
||||||
|
} else {
|
||||||
|
group = OWE_DH_GROUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpa_s->last_owe_group = group;
|
wpa_s->last_owe_group = group;
|
||||||
wpa_printf(MSG_DEBUG, "OWE: Try to use group %u", group);
|
wpa_printf(MSG_DEBUG, "OWE: Try to use group %u", group);
|
||||||
owe_ie = owe_build_assoc_req(wpa_s->wpa, group);
|
owe_ie = owe_build_assoc_req(wpa_s->wpa, group);
|
||||||
|
|
|
@ -2754,14 +2754,18 @@ static u8 * wpas_populate_assoc_ies(
|
||||||
|
|
||||||
if (ssid->owe_group) {
|
if (ssid->owe_group) {
|
||||||
group = ssid->owe_group;
|
group = ssid->owe_group;
|
||||||
} else {
|
} else if (wpa_s->assoc_status_code ==
|
||||||
|
WLAN_STATUS_FINITE_CYCLIC_GROUP_NOT_SUPPORTED) {
|
||||||
if (wpa_s->last_owe_group == 19)
|
if (wpa_s->last_owe_group == 19)
|
||||||
group = 20;
|
group = 20;
|
||||||
else if (wpa_s->last_owe_group == 20)
|
else if (wpa_s->last_owe_group == 20)
|
||||||
group = 21;
|
group = 21;
|
||||||
else
|
else
|
||||||
group = OWE_DH_GROUP;
|
group = OWE_DH_GROUP;
|
||||||
|
} else {
|
||||||
|
group = OWE_DH_GROUP;
|
||||||
}
|
}
|
||||||
|
|
||||||
wpa_s->last_owe_group = group;
|
wpa_s->last_owe_group = group;
|
||||||
wpa_printf(MSG_DEBUG, "OWE: Try to use group %u", group);
|
wpa_printf(MSG_DEBUG, "OWE: Try to use group %u", group);
|
||||||
owe_ie = owe_build_assoc_req(wpa_s->wpa, group);
|
owe_ie = owe_build_assoc_req(wpa_s->wpa, group);
|
||||||
|
|
Loading…
Reference in a new issue