qcacld-3.0: Update group management cipher suite in RSO command

The host driver updates the group management cipher suite to the
firmware as part of RSO commands over the WMI_AP_PROFILE
command.

Update the group management cipher suite from the crypto
component to the roam_request and copy it to the WMI_AP_PROFILE
command params in wma

Change-Id: I78d9cfbddfb74b16639ff03005935c4112a7e5af
CRs-Fixed: 2622864
This commit is contained in:
Abhinav Kumar 2020-02-15 22:04:24 +05:30 committed by nshrivas
parent 9c0556f6fb
commit 9838039beb

View File

@ -17759,16 +17759,53 @@ csr_rso_command_fill_11w_params(struct mac_context *mac_ctx,
struct roam_offload_scan_req *rso_req)
{
tSirRoamNetworkType *network_cfg = &rso_req->ConnectedNetwork;
tCsrRoamConnectedProfile session_connected_profile =
mac_ctx->roam.roamSession[session_id].connectedProfile;
tAniEdType group_mgmt_cipher;
network_cfg->mfp_enabled = session_connected_profile.MFPEnabled;
group_mgmt_cipher = session_connected_profile.mgmt_encryption_type;
struct wlan_objmgr_vdev *vdev;
uint16_t rsn_caps;
bool peer_rmf_capable = false;
uint32_t keymgmt;
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac_ctx->psoc,
session_id,
WLAN_LEGACY_SME_ID);
if (!vdev) {
pe_err("Invalid vdev");
return;
}
rsn_caps = (uint16_t)wlan_crypto_get_param(vdev,
WLAN_CRYPTO_PARAM_RSN_CAP);
if (wlan_crypto_vdev_has_mgmtcipher(vdev,
(1 << WLAN_CRYPTO_CIPHER_AES_GMAC) |
(1 << WLAN_CRYPTO_CIPHER_AES_GMAC_256) |
(1 << WLAN_CRYPTO_CIPHER_AES_CMAC)) &&
(rsn_caps &
WLAN_CRYPTO_RSN_CAP_MFP_ENABLED))
peer_rmf_capable = true;
network_cfg->mfp_enabled = peer_rmf_capable;
keymgmt = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_MGMT_CIPHER);
if (keymgmt & (1 << WLAN_CRYPTO_CIPHER_AES_CMAC)) {
group_mgmt_cipher = eSIR_ED_AES_128_CMAC;
} else if (keymgmt & (1 << WLAN_CRYPTO_CIPHER_AES_GMAC)) {
group_mgmt_cipher = eSIR_ED_AES_GMAC_128;
} else if (keymgmt & (1 << WLAN_CRYPTO_CIPHER_AES_GMAC_256)) {
group_mgmt_cipher = eSIR_ED_AES_GMAC_256;
} else {
group_mgmt_cipher = eSIR_ED_NONE;
}
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
if (network_cfg->mfp_enabled)
network_cfg->gp_mgmt_cipher_suite = group_mgmt_cipher;
else
network_cfg->gp_mgmt_cipher_suite = eSIR_ED_NONE;
pe_debug("gp_mgmt_cipher_suite %d", network_cfg->gp_mgmt_cipher_suite);
}
#else