]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
OWE: Try another group only on association rejection with status 77
authorAshok Kumar <aponnaia@codeaurora.org>
Thu, 1 Nov 2018 11:03:21 +0000 (16:33 +0530)
committerJouni Malinen <j@w1.fi>
Sun, 2 Dec 2018 18:42:09 +0000 (20:42 +0200)
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>
wpa_supplicant/events.c
wpa_supplicant/sme.c
wpa_supplicant/wpa_supplicant.c

index 846bf009e7592b9b8d11489b0ab673567b062d81..37d429d33022d055fc795190dcf7b0db1a25dbbe 100644 (file)
@@ -4085,6 +4085,7 @@ void wpa_supplicant_event(void *ctx, enum wpa_event_type event,
                }
 #endif /* CONFIG_TESTING_OPTIONS */
                wpa_supplicant_event_assoc(wpa_s, data);
+               wpa_s->assoc_status_code = WLAN_STATUS_SUCCESS;
                if (data &&
                    (data->assoc_info.authorized ||
                     (!(wpa_s->drv_flags & WPA_DRIVER_FLAGS_SME) &&
index dd42a192521333fb70075efb931173687c299854..39c80696a94c3f2027e647a9a1597ef3c4b65247 100644 (file)
@@ -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) {
                        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)
                                group = 20;
                        else if (wpa_s->last_owe_group == 20)
                                group = 21;
                        else
                                group = OWE_DH_GROUP;
+               } else {
+                       group = OWE_DH_GROUP;
                }
+
                wpa_s->last_owe_group = group;
                wpa_printf(MSG_DEBUG, "OWE: Try to use group %u", group);
                owe_ie = owe_build_assoc_req(wpa_s->wpa, group);
index 0fe2adb6bc65fdc3b4d6a9df7948932367d05298..a4b28671b5fbd72a7cf55126848c8f60573666e9 100644 (file)
@@ -2754,14 +2754,18 @@ static u8 * wpas_populate_assoc_ies(
 
                if (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)
                                group = 20;
                        else if (wpa_s->last_owe_group == 20)
                                group = 21;
                        else
                                group = OWE_DH_GROUP;
+               } else {
+                       group = OWE_DH_GROUP;
                }
+
                wpa_s->last_owe_group = group;
                wpa_printf(MSG_DEBUG, "OWE: Try to use group %u", group);
                owe_ie = owe_build_assoc_req(wpa_s->wpa, group);