qcacld-3.0: Fix RSN cap sent to firmware

Send RSN caps value as in supplicant to firmware instead of
intersection value.

Change-Id: If300836a89329325d906c88dcf06835ad767aa85
CRs-Fixed: 2746357
This commit is contained in:
Abhishek Singh
2020-08-03 09:22:04 +05:30
committed by snandini
parent e11176b5d5
commit dcce06ac56

View File

@@ -17227,23 +17227,6 @@ csr_add_ch_lst_from_roam_scan_list(struct mac_context *mac_ctx,
return QDF_STATUS_SUCCESS; return QDF_STATUS_SUCCESS;
} }
static void
csr_rso_command_fill_rsn_caps(struct mac_context *mac_ctx, uint8_t vdev_id,
uint16_t *rsn_caps)
{
struct wlan_objmgr_vdev *vdev;
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac_ctx->psoc, vdev_id,
WLAN_LEGACY_SME_ID);
if (!vdev) {
sme_err("Invalid vdev");
return;
}
*rsn_caps = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_RSN_CAP);
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
}
#ifdef WLAN_FEATURE_11W #ifdef WLAN_FEATURE_11W
/** /**
* csr_rso_command_fill_11w_params() - Fill the 11w related parameters * csr_rso_command_fill_11w_params() - Fill the 11w related parameters
@@ -17306,14 +17289,51 @@ csr_rso_command_fill_11w_params(struct mac_context *mac_ctx,
network_cfg->gp_mgmt_cipher_suite = eSIR_ED_NONE; network_cfg->gp_mgmt_cipher_suite = eSIR_ED_NONE;
} }
static void csr_fill_pmf_caps(uint16_t *rsn_caps,
tCsrRoamConnectedProfile *profile)
{
*rsn_caps &= ~WLAN_CRYPTO_RSN_CAP_MFP_ENABLED;
*rsn_caps &= ~WLAN_CRYPTO_RSN_CAP_MFP_REQUIRED;
if (profile->MFPRequired)
*rsn_caps |= WLAN_CRYPTO_RSN_CAP_MFP_REQUIRED;
if (profile->MFPCapable)
*rsn_caps |= WLAN_CRYPTO_RSN_CAP_MFP_ENABLED;
}
#else #else
static inline static inline
void csr_rso_command_fill_11w_params(struct mac_context *mac_ctx, void csr_rso_command_fill_11w_params(struct mac_context *mac_ctx,
uint8_t session_id, uint8_t session_id,
struct roam_offload_scan_req *rso_req) struct roam_offload_scan_req *rso_req)
{} {}
static inline
void csr_fill_pmf_caps(uint16_t *rsn_caps, tCsrRoamConnectedProfile *profile)
{
*rsn_caps &= ~WLAN_CRYPTO_RSN_CAP_MFP_ENABLED;
*rsn_caps &= ~WLAN_CRYPTO_RSN_CAP_MFP_REQUIRED;
}
#endif #endif
static void
csr_rso_command_fill_rsn_caps(struct mac_context *mac_ctx, uint8_t vdev_id,
uint16_t *rsn_caps,
tCsrRoamConnectedProfile *profile)
{
struct wlan_objmgr_vdev *vdev;
vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac_ctx->psoc, vdev_id,
WLAN_LEGACY_SME_ID);
if (!vdev) {
sme_err("Invalid vdev");
return;
}
*rsn_caps = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_RSN_CAP);
csr_fill_pmf_caps(rsn_caps, profile);
wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
}
/** /**
* csr_update_btm_offload_config() - Update btm config param to fw * csr_update_btm_offload_config() - Update btm config param to fw
* @mac_ctx: Global mac ctx * @mac_ctx: Global mac ctx
@@ -17463,7 +17483,8 @@ csr_create_roam_scan_offload_request(struct mac_context *mac_ctx,
/* Copy the self RSN capabilities in roam offload request */ /* Copy the self RSN capabilities in roam offload request */
csr_rso_command_fill_rsn_caps(mac_ctx, session_id, csr_rso_command_fill_rsn_caps(mac_ctx, session_id,
(uint16_t *)&req_buf->rsn_caps); (uint16_t *)&req_buf->rsn_caps,
&mac_ctx->roam.roamSession[session_id].connectedProfile);
csr_rso_command_fill_11w_params(mac_ctx, session_id, req_buf); csr_rso_command_fill_11w_params(mac_ctx, session_id, req_buf);
req_buf->delay_before_vdev_stop = req_buf->delay_before_vdev_stop =