qcacld-3.0: Add support for WPA3 SuiteB roaming

This commit enables support for SuiteB roaming for SHA384.
Based on the WPA3 SuiteB roam service capability advertisement
received from Firmware, we enable the support in Host.

Change-Id: Iab4e6bfc9c8ba7d604c2720c8cb848fce40dd6b4
CRs-Fixed: 2685975
This commit is contained in:
Srikanth Marepalli 2020-05-02 20:52:32 +05:30 • committed by nshrivas
commit ec2675cd04
4 changed files with 21 additions and 0 deletions

View file

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

View file

@ -1280,6 +1280,9 @@ typedef QDF_STATUS (*csr_session_close_cb)(uint8_t session_id);
#define CSR_IS_FW_FT_FILS_SUPPORTED(fw_akm_bitmap) \
(((fw_akm_bitmap) & (1 << AKM_FT_FILS)) ? true : false)
#define CSR_IS_FW_SUITEB_ROAM_SUPPORTED(fw_akm_bitmap) \
(((fw_akm_bitmap) & (1 << AKM_SUITEB)) ? true : false)
QDF_STATUS csr_set_channels(struct mac_context *mac,
struct csr_config_params *pParam);

View file

@ -224,6 +224,8 @@ enum mgmt_auth_type diag_auth_type_from_csr_type(enum csr_akm_type authtype)
n = AUTH_WPA_PSK;
break;
case eCSR_AUTH_TYPE_RSN:
case eCSR_AUTH_TYPE_SUITEB_EAP_SHA256:
case eCSR_AUTH_TYPE_SUITEB_EAP_SHA384:
#ifdef WLAN_FEATURE_11W
case eCSR_AUTH_TYPE_RSN_8021X_SHA256:
#endif
@ -6222,6 +6224,8 @@ static QDF_STATUS csr_roam_save_params(struct mac_context *mac_ctx,
(eCSR_AUTH_TYPE_FT_RSN_PSK == auth_type) ||
(eCSR_AUTH_TYPE_FT_SAE == auth_type) ||
(eCSR_AUTH_TYPE_FT_SUITEB_EAP_SHA384 == auth_type) ||
(eCSR_AUTH_TYPE_SUITEB_EAP_SHA256 == auth_type) ||
(eCSR_AUTH_TYPE_SUITEB_EAP_SHA384 == auth_type) ||
#if defined WLAN_FEATURE_11W
(eCSR_AUTH_TYPE_RSN_PSK_SHA256 == auth_type) ||
(eCSR_AUTH_TYPE_RSN_8021X_SHA256 == auth_type) ||
@ -6405,6 +6409,8 @@ csr_roam_save_security_rsp_ie(struct mac_context *mac,
(eCSR_AUTH_TYPE_FT_RSN_PSK == authType)
|| (eCSR_AUTH_TYPE_FT_SAE == authType)
|| (eCSR_AUTH_TYPE_FT_SUITEB_EAP_SHA384 == authType)
|| (eCSR_AUTH_TYPE_SUITEB_EAP_SHA256 == authType)
|| (eCSR_AUTH_TYPE_SUITEB_EAP_SHA384 == authType)
#ifdef FEATURE_WLAN_WAPI
|| (eCSR_AUTH_TYPE_WAPI_WAI_PSK == authType) ||
(eCSR_AUTH_TYPE_WAPI_WAI_CERTIFICATE == authType)
@ -18824,6 +18830,13 @@ csr_roam_offload_scan(struct mac_context *mac_ctx, uint8_t session_id,
return QDF_STATUS_SUCCESS;
}
if ((roam_profile_akm == eCSR_AUTH_TYPE_SUITEB_EAP_SHA256 ||
roam_profile_akm == eCSR_AUTH_TYPE_SUITEB_EAP_SHA384) &&
!CSR_IS_FW_SUITEB_ROAM_SUPPORTED(fw_akm_bitmap)) {
sme_info("Roaming not supported for SUITEB connection");
return QDF_STATUS_SUCCESS;
}
/*
* If fw doesn't advertise FT SAE, FT-FILS or FT-Suite-B capability,
* don't support roaming to that profile

View file

@ -5599,6 +5599,10 @@ static void wma_set_mlme_caps(struct wlan_objmgr_psoc *psoc)
if (tgt_cap)
akm_bitmap |= (1 << AKM_SAE);
tgt_cap = wmi_service_enabled(wma->wmi_handle,
wmi_service_suiteb_roam_support);
if (tgt_cap)
akm_bitmap |= (1 << AKM_SUITEB);
status = mlme_set_tgt_wpa3_roam_cap(psoc, akm_bitmap);
if (QDF_IS_STATUS_ERROR(status))