Browse Source

qcacld-3.0: Add FW support for AKM 24

Add FW support for AKM 24

Change-Id: I067c7f2a4eabe680fdd38e78cb5ffbd8ad306ad3
CRs-Fixed: 3301709
Vijay Raj 2 years ago
parent
commit
f101354847

+ 1 - 0
components/mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -1769,6 +1769,7 @@ struct bss_load_trigger {
 #define AKM_SAE              3
 #define AKM_OWE              4
 #define AKM_SUITEB           5
+#define AKM_SAE_EXT          6
 
 #define LFR3_STA_ROAM_DISABLE_BY_P2P BIT(0)
 #define LFR3_STA_ROAM_DISABLE_BY_NAN BIT(1)

+ 13 - 0
components/umac/mlme/connection_mgr/core/src/wlan_cm_roam_offload.c

@@ -57,10 +57,15 @@
 
 #define CM_IS_FW_SAE_ROAM_SUPPORTED(fw_akm_bitmap) \
 	(((fw_akm_bitmap) & (1 << AKM_SAE)) ? true : false)
+
+#define CM_IS_FW_SAE_EXT_ROAM_SUPPORTED(fw_akm_bitmap) \
+	(((fw_akm_bitmap) & (1 << AKM_SAE_EXT)) ? true : false)
 #else
 #define CM_IS_FW_FT_SAE_SUPPORTED(fw_akm_bitmap) (false)
 
 #define CM_IS_FW_SAE_ROAM_SUPPORTED(fw_akm_bitmap) (false)
+
+#define CM_IS_FW_SAE_EXT_SUPPORTED(fw_akm_bitmap) (false)
 #endif
 
 /**
@@ -1581,6 +1586,8 @@ static uint32_t cm_get_rsn_wmi_auth_type(int32_t akm)
 		return WMI_AUTH_RSNA_SUITE_B_8021X_SHA384;
 	else if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_FT_IEEE8021X_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
 		return WMI_AUTH_NONE;
 }
@@ -3480,6 +3487,12 @@ cm_akm_roam_allowed(struct wlan_objmgr_psoc *psoc,
 		return QDF_STATUS_E_NOSUPPORT;
 	}
 
+	if (QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_SAE_EXT_KEY) &&
+	    !CM_IS_FW_SAE_EXT_ROAM_SUPPORTED(fw_akm_bitmap)) {
+		mlme_info("Roaming not supported for SAE EXT akm");
+		return QDF_STATUS_E_NOSUPPORT;
+	}
+
 	if ((QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SUITE_B) ||
 	     QDF_HAS_PARAM(akm, WLAN_CRYPTO_KEY_MGMT_IEEE8021X_SUITE_B_192)) &&
 	     !(fw_akm_bitmap & (1 << AKM_SUITEB))) {

+ 5 - 0
core/wma/src/wma_main.c

@@ -6178,6 +6178,11 @@ static void wma_set_mlme_caps(struct wlan_objmgr_psoc *psoc)
 	if (tgt_cap)
 		akm_bitmap |= (1 << AKM_SUITEB);
 
+	tgt_cap = wmi_service_enabled(wma->wmi_handle,
+				      wmi_service_wpa3_sha384_roam_support);
+	if (tgt_cap)
+		akm_bitmap |= (1 << AKM_SAE_EXT);
+
 	status = mlme_set_tgt_wpa3_roam_cap(psoc, akm_bitmap);
 	if (QDF_IS_STATUS_ERROR(status))
 		wma_err("Failed to set sae roam support");