diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index aa0546cb7f6b..010e3cb804f1 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -7147,6 +7147,29 @@ static void csr_update_tx_pwr_to_fw(struct mac_context *mac_ctx, } } +static void csr_update_rsn_intersect_to_fw(struct wlan_objmgr_psoc *psoc, + uint8_t vdev_id) +{ + uint32_t rsn_val = 0; + struct wlan_objmgr_vdev *vdev; + + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(psoc, vdev_id, + WLAN_LEGACY_SME_ID); + + if (!vdev) { + sme_err("Invalid vdev obj for vdev id %d", vdev_id); + return; + } + + rsn_val = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_RSN_CAP); + wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID); + + if (wma_cli_set2_command(vdev_id, WMI_VDEV_PARAM_RSN_CAPABILITY, + rsn_val, 0, VDEV_CMD)) + sme_err("Failed to update WMI_VDEV_PARAM_RSN_CAPABILITY for vdev id %d", + vdev_id); +} + /** * csr_roam_process_join_res() - Process the Join results * @mac_ctx: Global MAC Context @@ -7557,6 +7580,7 @@ static void csr_roam_process_join_res(struct mac_context *mac_ctx, } csr_update_tx_pwr_to_fw(mac_ctx, session_id); + csr_update_rsn_intersect_to_fw(mac_ctx->psoc, session_id); sme_free_join_rsp_fils_params(roam_info); qdf_mem_free(roam_info); }