switch (sme->crypto.akm_suites[0]) {
                case WLAN_AKM_SUITE_SAE:
                        val = WPA3_AUTH_SAE_PSK;
+                       if (sme->crypto.sae_pwd) {
+                               brcmf_dbg(INFO, "using SAE offload\n");
+                               profile->use_fwsup = BRCMF_PROFILE_FWSUP_SAE;
+                       }
                        break;
                default:
                        bphy_err(drvr, "invalid cipher group (%d)\n",
                goto done;
        }
 
-       if (sme->crypto.sae_pwd) {
-               brcmf_dbg(INFO, "using SAE offload\n");
-               profile->use_fwsup = BRCMF_PROFILE_FWSUP_SAE;
-       }
-
        if (sme->crypto.psk &&
            profile->use_fwsup != BRCMF_PROFILE_FWSUP_SAE) {
                if (WARN_ON(profile->use_fwsup != BRCMF_PROFILE_FWSUP_NONE)) {
        u32 event = e->event_code;
        u32 status = e->status;
 
-       if (vif->profile.use_fwsup == BRCMF_PROFILE_FWSUP_PSK &&
+       if ((vif->profile.use_fwsup == BRCMF_PROFILE_FWSUP_PSK ||
+            vif->profile.use_fwsup == BRCMF_PROFILE_FWSUP_SAE) &&
            event == BRCMF_E_PSK_SUP &&
            status == BRCMF_E_STATUS_FWSUP_COMPLETED)
                set_bit(BRCMF_VIF_STATUS_EAP_SUCCESS, &vif->sme_state);