qcacld-3.0: Add support for AKM25

Add support for FT-SAE-EXT-KEY AKM.

Change-Id: Ia013a81f67d204fed486ab130b3480654703f59c
CRs-Fixed: 3406625
This commit is contained in:
Surya Prakash Sivaraj
2023-02-07 20:51:32 -08:00
committed by Madan Koyyalamudi
parent 9fee6143d7
commit 83299d06fc
11 changed files with 34 additions and 10 deletions

View File

@@ -1561,6 +1561,10 @@ static uint32_t cm_get_rsn_wmi_auth_type(int32_t akm)
return WMI_AUTH_RSNA_FILS_SHA384; return WMI_AUTH_RSNA_FILS_SHA384;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FILS_SHA256)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FILS_SHA256))
return WMI_AUTH_RSNA_FILS_SHA256; return WMI_AUTH_RSNA_FILS_SHA256;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE_EXT_KEY))
return WMI_AUTH_FT_RSNA_SAE_SHA384;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY))
return WMI_AUTH_WPA3_SAE_SHA384;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE))
return WMI_AUTH_FT_RSNA_SAE; return WMI_AUTH_FT_RSNA_SAE;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE))
@@ -1587,8 +1591,6 @@ static uint32_t cm_get_rsn_wmi_auth_type(int32_t akm)
return WMI_AUTH_RSNA_SUITE_B_8021X_SHA384; return WMI_AUTH_RSNA_SUITE_B_8021X_SHA384;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X_SHA384)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X_SHA384))
return WMI_AUTH_FT_RSNA_SUITE_B_8021X_SHA384; return WMI_AUTH_FT_RSNA_SUITE_B_8021X_SHA384;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY))
return WMI_AUTH_WPA3_SAE_SHA384;
else else
return WMI_AUTH_NONE; return WMI_AUTH_NONE;
} }
@@ -3501,7 +3503,8 @@ cm_akm_roam_allowed(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_E_NOSUPPORT; return QDF_STATUS_E_NOSUPPORT;
} }
if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY) && if ((QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY) ||
QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE_EXT_KEY)) &&
!CM_IS_FW_SAE_EXT_ROAM_SUPPORTED(fw_akm_bitmap)) { !CM_IS_FW_SAE_EXT_ROAM_SUPPORTED(fw_akm_bitmap)) {
mlme_info("Roaming not supported for SAE EXT akm"); mlme_info("Roaming not supported for SAE EXT akm");
return QDF_STATUS_E_NOSUPPORT; return QDF_STATUS_E_NOSUPPORT;
@@ -5403,7 +5406,8 @@ bool cm_is_auth_type_11r(struct wlan_mlme_psoc_ext_obj *mlme_obj,
QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X) || QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X) ||
QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_PSK) || QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_PSK) ||
QDF_HAS_PARAM(akm, QDF_HAS_PARAM(akm,
WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X_SHA384)) { WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X_SHA384) ||
QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE_EXT_KEY)) {
return true; return true;
} }

View File

@@ -395,6 +395,8 @@ static const uint8_t *cm_diag_get_akm_str(enum mgmt_auth_type auth_type,
return "FILS-SHA384"; return "FILS-SHA384";
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FILS_SHA256)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FILS_SHA256))
return "FILS-SHA256"; return "FILS-SHA256";
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE_EXT_KEY))
return "FT-SAE-EXT-KEY";
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE))
return "FT-SAE"; return "FT-SAE";
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY))
@@ -1479,7 +1481,8 @@ static void cm_process_connect_complete(struct wlan_objmgr_psoc *psoc,
sizeof(struct wlan_frame_hdr)); sizeof(struct wlan_frame_hdr));
} }
akm = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_KEY_MGMT); akm = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_KEY_MGMT);
if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE)) { if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE) ||
QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE_EXT_KEY)) {
mlme_debug("Update the MDID in PMK cache for FT-SAE case"); mlme_debug("Update the MDID in PMK cache for FT-SAE case");
cm_update_pmk_cache_ft(psoc, vdev_id, NULL); cm_update_pmk_cache_ft(psoc, vdev_id, NULL);
} }

View File

@@ -3810,6 +3810,7 @@ static bool wmi_is_ft_akm(int akm,
case WMI_AUTH_FT_RSNA_SUITE_B_8021X_SHA384: case WMI_AUTH_FT_RSNA_SUITE_B_8021X_SHA384:
case WMI_AUTH_FT_RSNA_FILS_SHA256: case WMI_AUTH_FT_RSNA_FILS_SHA256:
case WMI_AUTH_FT_RSNA_FILS_SHA384: case WMI_AUTH_FT_RSNA_FILS_SHA384:
case WMI_AUTH_FT_RSNA_SAE_SHA384:
return true; return true;
case WMI_AUTH_OPEN: case WMI_AUTH_OPEN:
if (roam_req->rso_11r_info.mdid.mdie_present && if (roam_req->rso_11r_info.mdid.mdie_present &&

View File

@@ -326,6 +326,8 @@ wlan_hdd_get_keymgmt_for_sae_akm(uint32_t akm)
return WLAN_AKM_SUITE_FT_OVER_SAE; return WLAN_AKM_SUITE_FT_OVER_SAE;
else if (akm == WLAN_AKM_SAE_EXT_KEY) else if (akm == WLAN_AKM_SAE_EXT_KEY)
return WLAN_AKM_SUITE_SAE_EXT_KEY; return WLAN_AKM_SUITE_SAE_EXT_KEY;
else if (akm == WLAN_AKM_FT_SAE_EXT_KEY)
return WLAN_AKM_SUITE_FT_SAE_EXT_KEY;
/** /**
* Legacy FW doesn't support SAE-EXK-KEY or * Legacy FW doesn't support SAE-EXK-KEY or
* Cross-SAE_AKM roaming. In such cases, send * Cross-SAE_AKM roaming. In such cases, send

View File

@@ -539,6 +539,7 @@ static const u32 hdd_sta_akm_suites[] = {
WAPI_PSK_AKM_SUITE, WAPI_PSK_AKM_SUITE,
WAPI_CERT_AKM_SUITE, WAPI_CERT_AKM_SUITE,
WLAN_AKM_SUITE_SAE_EXT_KEY, WLAN_AKM_SUITE_SAE_EXT_KEY,
WLAN_AKM_SUITE_FT_SAE_EXT_KEY,
}; };
/*akm suits supported by AP*/ /*akm suits supported by AP*/

View File

@@ -1,6 +1,6 @@
/* /*
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved. * Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
* Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -192,6 +192,10 @@ extern const struct nla_policy wlan_hdd_wisa_cmd_policy[
#define WLAN_AKM_SUITE_SAE_EXT_KEY 0x000FAC18 #define WLAN_AKM_SUITE_SAE_EXT_KEY 0x000FAC18
#endif #endif
#ifndef WLAN_AKM_SUITE_FT_SAE_EXT_KEY
#define WLAN_AKM_SUITE_FT_SAE_EXT_KEY 0x000FAC19
#endif
#ifdef FEATURE_WLAN_TDLS #ifdef FEATURE_WLAN_TDLS
#define WLAN_IS_TDLS_SETUP_ACTION(action) \ #define WLAN_IS_TDLS_SETUP_ACTION(action) \
((TDLS_SETUP_REQUEST <= action) && \ ((TDLS_SETUP_REQUEST <= action) && \

View File

@@ -89,6 +89,7 @@ enum ani_akm_type {
ANI_AKM_TYPE_WPA, ANI_AKM_TYPE_WPA,
ANI_AKM_TYPE_WPA_PSK, ANI_AKM_TYPE_WPA_PSK,
ANI_AKM_TYPE_SAE_EXT_KEY, ANI_AKM_TYPE_SAE_EXT_KEY,
ANI_AKM_TYPE_FT_SAE_EXT_KEY,
ANI_NUM_OF_SUPPORT_AKM_TYPE, ANI_NUM_OF_SUPPORT_AKM_TYPE,
ANI_AKM_TYPE_UNKNOWN = 0xff, ANI_AKM_TYPE_UNKNOWN = 0xff,
}; };

View File

@@ -594,7 +594,9 @@ static inline
uint32_t lim_get_sae_keymgmt_suite(uint32_t keymgmt) uint32_t lim_get_sae_keymgmt_suite(uint32_t keymgmt)
{ {
/* Select the best SAE AKM suite supported */ /* Select the best SAE AKM suite supported */
if (QDF_HAS_PARAM(keymgmt, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY)) if (QDF_HAS_PARAM(keymgmt, WLAN_CRYPTO_KEY_MGMT_FT_SAE_EXT_KEY))
return WLAN_AKM_FT_SAE_EXT_KEY;
else if (QDF_HAS_PARAM(keymgmt, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY))
return WLAN_AKM_SAE_EXT_KEY; return WLAN_AKM_SAE_EXT_KEY;
else if (QDF_HAS_PARAM(keymgmt, WLAN_CRYPTO_KEY_MGMT_FT_SAE)) else if (QDF_HAS_PARAM(keymgmt, WLAN_CRYPTO_KEY_MGMT_FT_SAE))
return WLAN_AKM_FT_SAE; return WLAN_AKM_FT_SAE;

View File

@@ -524,7 +524,8 @@ static void lim_set_privacy(struct mac_context *mac_ctx,
mac_ctx->mlme_cfg->wep_params.auth_type = eSIR_SHARED_KEY; mac_ctx->mlme_cfg->wep_params.auth_type = eSIR_SHARED_KEY;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE) || else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE) ||
QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE) || QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE) ||
QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY)) QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY) ||
QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE_EXT_KEY))
mac_ctx->mlme_cfg->wep_params.auth_type = eSIR_AUTH_TYPE_SAE; mac_ctx->mlme_cfg->wep_params.auth_type = eSIR_AUTH_TYPE_SAE;
if (QDF_HAS_PARAM(ucast_cipher, WLAN_CRYPTO_CIPHER_WEP) || if (QDF_HAS_PARAM(ucast_cipher, WLAN_CRYPTO_CIPHER_WEP) ||
@@ -3602,6 +3603,8 @@ lim_get_rsn_akm(uint32_t akm)
return ANI_AKM_TYPE_FILS_SHA384; return ANI_AKM_TYPE_FILS_SHA384;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FILS_SHA256)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FILS_SHA256))
return ANI_AKM_TYPE_FILS_SHA256; return ANI_AKM_TYPE_FILS_SHA256;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE_EXT_KEY))
return ANI_AKM_TYPE_FT_SAE_EXT_KEY;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE))
return ANI_AKM_TYPE_FT_SAE; return ANI_AKM_TYPE_FT_SAE;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE))

View File

@@ -73,6 +73,7 @@ enum csr_akm_type {
eCSR_AUTH_TYPE_FT_SAE, eCSR_AUTH_TYPE_FT_SAE,
eCSR_AUTH_TYPE_FT_SUITEB_EAP_SHA384, eCSR_AUTH_TYPE_FT_SUITEB_EAP_SHA384,
eCSR_AUTH_TYPE_SAE_EXT_KEY, eCSR_AUTH_TYPE_SAE_EXT_KEY,
eCSR_AUTH_TYPE_FT_SAE_EXT_KEY,
eCSR_NUM_OF_SUPPORT_AUTH_TYPE, eCSR_NUM_OF_SUPPORT_AUTH_TYPE,
eCSR_AUTH_TYPE_FAILED = 0xff, eCSR_AUTH_TYPE_FAILED = 0xff,
eCSR_AUTH_TYPE_UNKNOWN = eCSR_AUTH_TYPE_FAILED, eCSR_AUTH_TYPE_UNKNOWN = eCSR_AUTH_TYPE_FAILED,

View File

@@ -617,6 +617,10 @@ static void csr_fill_rsn_auth_type(enum csr_akm_type *auth_type, uint32_t akm)
*auth_type = eCSR_AUTH_TYPE_FILS_SHA384; *auth_type = eCSR_AUTH_TYPE_FILS_SHA384;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FILS_SHA256)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FILS_SHA256))
*auth_type = eCSR_AUTH_TYPE_FILS_SHA256; *auth_type = eCSR_AUTH_TYPE_FILS_SHA256;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE_EXT_KEY))
*auth_type = eCSR_AUTH_TYPE_FT_SAE_EXT_KEY;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY))
*auth_type = eCSR_AUTH_TYPE_SAE_EXT_KEY;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_SAE))
*auth_type = eCSR_AUTH_TYPE_FT_SAE; *auth_type = eCSR_AUTH_TYPE_FT_SAE;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE))
@@ -647,8 +651,6 @@ static void csr_fill_rsn_auth_type(enum csr_akm_type *auth_type, uint32_t akm)
*auth_type = eCSR_AUTH_TYPE_SUITEB_EAP_SHA384; *auth_type = eCSR_AUTH_TYPE_SUITEB_EAP_SHA384;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X_SHA384)) else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X_SHA384))
*auth_type = eCSR_AUTH_TYPE_FT_SUITEB_EAP_SHA384; *auth_type = eCSR_AUTH_TYPE_FT_SUITEB_EAP_SHA384;
else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY))
*auth_type = eCSR_AUTH_TYPE_SAE_EXT_KEY;
else else
*auth_type = eCSR_AUTH_TYPE_NONE; *auth_type = eCSR_AUTH_TYPE_NONE;
} }