Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 198520e7 authored by Abhishek Singh's avatar Abhishek Singh Committed by snandini
Browse files

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
parent 928a2752
Loading
Loading
Loading
Loading
+39 −18
Original line number Diff line number Diff line
@@ -18359,23 +18359,6 @@ csr_add_ch_lst_from_roam_scan_list(struct mac_context *mac_ctx,
	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
/**
 * csr_rso_command_fill_11w_params() - Fill the 11w related parameters
@@ -18440,14 +18423,51 @@ csr_rso_command_fill_11w_params(struct mac_context *mac_ctx,
	pe_debug("gp_mgmt_cipher_suite %d", network_cfg->gp_mgmt_cipher_suite);
}
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
static inline
void csr_rso_command_fill_11w_params(struct mac_context *mac_ctx,
				     uint8_t session_id,
				     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
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
 * @mac_ctx: Global mac ctx
@@ -18598,7 +18618,8 @@ csr_create_roam_scan_offload_request(struct mac_context *mac_ctx,
	/* Copy the self RSN capabilities in roam offload request */
	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);
	req_buf->delay_before_vdev_stop =