diff --git a/core/wma/src/wma_mgmt.c b/core/wma/src/wma_mgmt.c index 40c200488b7e..4dfc360e4bf6 100644 --- a/core/wma/src/wma_mgmt.c +++ b/core/wma/src/wma_mgmt.c @@ -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; diff --git a/core/wma/src/wma_scan_roam.c b/core/wma/src/wma_scan_roam.c index c8fc8e566b75..3a02797214ad 100644 --- a/core/wma/src/wma_scan_roam.c +++ b/core/wma/src/wma_scan_roam.c @@ -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; }