qcacld-3.0: Add support for GMAC offload

Add check for GMAC offload capability wmi_service_gmac_offload_support.
If firmware supports GMAC offload, trim MMIE when driver receives
PMF frame. Otherwise, driver calculates MIC and trims MMIE.

Also, add support for suiteB auth types during roaming in
e_csr_auth_type_to_rsn_authmode.

Change-Id: Id44f44a41297ca3e462d14905f5986f904a639fd
CRs-Fixed: 2185819
This commit is contained in:
Padma, Santhosh Kumar 2018-02-02 18:16:27 +05:30 • committed by snandini
commit 9668240906
2 changed files with 25 additions and 7 deletions

View file

@ -3325,6 +3325,8 @@ int wma_process_bip(tp_wma_handle wma_handle,
return -EINVAL;
}
WMA_LOGD(FL("key_cipher %d key_id %d"), iface->key.key_cipher, key_id);
switch (iface->key.key_cipher) {
case WMI_CIPHER_AES_CMAC:
if (wmi_service_enabled(wma_handle->wmi_handle,
@ -3350,15 +3352,27 @@ int wma_process_bip(tp_wma_handle wma_handle,
break;
case WMI_CIPHER_AES_GMAC:
if (cds_is_gmac_mmie_valid(iface->key.key,
iface->key.key_id[key_id - WMA_IGTK_KEY_INDEX_4].ipn,
(uint8_t *) wh, efrm, iface->key.key_length)) {
WMA_LOGD(FL("Protected BC/MC frame GMAC MMIE validation successful"));
/* Remove MMIE */
if (wmi_service_enabled(wma_handle->wmi_handle,
wmi_service_gmac_offload_support)) {
/*
* if gmac offload is enabled then mmie validation is
* performed in firmware, host just need to trim the
* mmie.
*/
WMA_LOGD(FL("Trim GMAC MMIE"));
qdf_nbuf_trim_tail(wbuf, cds_get_gmac_mmie_size());
} else {
WMA_LOGD(FL("BC/MC GMAC MIC error or MMIE not present, dropping the frame"));
return -EINVAL;
if (cds_is_gmac_mmie_valid(iface->key.key,
iface->key.key_id[key_id - WMA_IGTK_KEY_INDEX_4].ipn,
(uint8_t *) wh, efrm, iface->key.key_length)) {
WMA_LOGD(FL("Protected BC/MC frame GMAC MMIE validation successful"));
/* Remove MMIE */
qdf_nbuf_trim_tail(wbuf,
cds_get_gmac_mmie_size());
} else {
WMA_LOGD(FL("BC/MC GMAC MIC error or MMIE not present, dropping the frame"));
return -EINVAL;
}
}
break;

View file

@ -673,6 +673,10 @@ A_UINT32 e_csr_auth_type_to_rsn_authmode(eCsrAuthType authtype,
return WMI_AUTH_RSNA_FILS_SHA256;
case eCSR_AUTH_TYPE_FILS_SHA384:
return WMI_AUTH_RSNA_FILS_SHA384;
case eCSR_AUTH_TYPE_SUITEB_EAP_SHA256:
return WMI_AUTH_RSNA_SUITE_B_8021X_SHA256;
case eCSR_AUTH_TYPE_SUITEB_EAP_SHA384:
return WMI_AUTH_RSNA_SUITE_B_8021X_SHA384;
default:
return WMI_AUTH_NONE;
}