qcacld-3.0: Set negotiated auth type to OPEN for SAE-pmk cache case

wpa_supplicant sends connect request with open auth and pmkid
when PMK caching is enabled and if it has PMK/PMKID cached.
Set rsn_auth_type to SAE when connect request has AKM as SAE
auth_type as open.
Set negotiated auth type to OPEN in SAE with pmk cache case as
open authentication going to happen. Similar fix is applicable
for FT-SAE. Handle the same.

Change-Id: I9ccc419bd439702041840b0194bb0622d7856255
CRs-Fixed: 2467813
This commit is contained in:
Srinivas Dasari
2019-06-17 15:21:44 +05:30
committed by nshrivas
parent c52f24d0f4
commit 4bf1c934a4
2 changed files with 10 additions and 2 deletions

View File

@@ -5611,9 +5611,9 @@ int hdd_set_csr_auth_type(struct hdd_adapter *adapter,
roam_profile = hdd_roam_profile(adapter); roam_profile = hdd_roam_profile(adapter);
roam_profile->AuthType.numEntries = 1; roam_profile->AuthType.numEntries = 1;
hdd_debug("auth_type = %d rsn_auth_type %d wpa_versions %d", hdd_debug("auth_type = %d rsn_auth_type %d wpa_versions %d key_mgmt : 0x%x",
sta_ctx->conn_info.auth_type, rsn_auth_type, sta_ctx->conn_info.auth_type, rsn_auth_type,
sta_ctx->wpa_versions); sta_ctx->wpa_versions, key_mgmt);
switch (sta_ctx->conn_info.auth_type) { switch (sta_ctx->conn_info.auth_type) {
case eCSR_AUTH_TYPE_OPEN_SYSTEM: case eCSR_AUTH_TYPE_OPEN_SYSTEM:
@@ -5711,6 +5711,10 @@ int hdd_set_csr_auth_type(struct hdd_adapter *adapter,
/* OWE case */ /* OWE case */
roam_profile->AuthType.authType[0] = roam_profile->AuthType.authType[0] =
eCSR_AUTH_TYPE_OWE; eCSR_AUTH_TYPE_OWE;
} else if (rsn_auth_type == eCSR_AUTH_TYPE_SAE) {
/* SAE with open authentication case */
roam_profile->AuthType.authType[0] =
eCSR_AUTH_TYPE_SAE;
} else if ((rsn_auth_type == } else if ((rsn_auth_type ==
eCSR_AUTH_TYPE_SUITEB_EAP_SHA256) && eCSR_AUTH_TYPE_SUITEB_EAP_SHA256) &&
((key_mgmt & HDD_AUTH_KEY_MGMT_802_1X) ((key_mgmt & HDD_AUTH_KEY_MGMT_802_1X)

View File

@@ -3213,6 +3213,8 @@ csr_check_sae_auth(struct mac_context *mac_ctx,
authentication)) { authentication)) {
if (eCSR_AUTH_TYPE_FT_SAE == auth_type->authType[index]) if (eCSR_AUTH_TYPE_FT_SAE == auth_type->authType[index])
*neg_authtype = eCSR_AUTH_TYPE_FT_SAE; *neg_authtype = eCSR_AUTH_TYPE_FT_SAE;
if (eCSR_AUTH_TYPE_OPEN_SYSTEM == auth_type->authType[index])
*neg_authtype = eCSR_AUTH_TYPE_OPEN_SYSTEM;
} }
if ((*neg_authtype == eCSR_AUTH_TYPE_UNKNOWN) && if ((*neg_authtype == eCSR_AUTH_TYPE_UNKNOWN) &&
@@ -3220,6 +3222,8 @@ csr_check_sae_auth(struct mac_context *mac_ctx,
c_auth_suites, authentication)) { c_auth_suites, authentication)) {
if (eCSR_AUTH_TYPE_SAE == auth_type->authType[index]) if (eCSR_AUTH_TYPE_SAE == auth_type->authType[index])
*neg_authtype = eCSR_AUTH_TYPE_SAE; *neg_authtype = eCSR_AUTH_TYPE_SAE;
if (eCSR_AUTH_TYPE_OPEN_SYSTEM == auth_type->authType[index])
*neg_authtype = eCSR_AUTH_TYPE_OPEN_SYSTEM;
} }
sme_debug("negotiated auth type is %d", *neg_authtype); sme_debug("negotiated auth type is %d", *neg_authtype);
} }