Browse Source

qcacld-3.0: Update self RSN caps to FW in RSO update/start cmd

Present source of self RSN capability to copy in RSO command i.e
csr_roam_session's rsn_cap is zero, A new capability OCVC (Operating
Channel Validation Capable) bit is in RSN capabilities. FW enables
OCV feature only if STA and AP both supports it.
Hence update self RSN capability to FW in RSO start/update command.

Change-Id: I1db500142560ec64a24ffab0c414c0c2b733e454
CRs-Fixed: 2721095
Abhishek Ambure 4 years ago
parent
commit
5e1f7ea5d6
2 changed files with 21 additions and 4 deletions
  1. 0 1
      core/sme/inc/csr_internal.h
  2. 21 3
      core/sme/src/csr/csr_api_roam.c

+ 0 - 1
core/sme/inc/csr_internal.h

@@ -516,7 +516,6 @@ struct csr_roam_session {
 	struct qdf_mac_addr self_mac_addr;
 
 	eCsrConnectState connectState;
-	struct rsn_caps rsn_caps;
 	tCsrRoamConnectedProfile connectedProfile;
 	struct csr_roam_connectedinfo connectedInfo;
 	struct csr_roam_connectedinfo prev_assoc_ap_info;

+ 21 - 3
core/sme/src/csr/csr_api_roam.c

@@ -17257,6 +17257,23 @@ 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
@@ -17283,7 +17300,7 @@ csr_rso_command_fill_11w_params(struct mac_context *mac_ctx,
 			session_id,
 			WLAN_LEGACY_SME_ID);
 	if (!vdev) {
-		pe_err("Invalid vdev");
+		sme_err("Invalid vdev");
 		return;
 	}
 
@@ -17473,9 +17490,10 @@ csr_create_roam_scan_offload_request(struct mac_context *mac_ctx,
 	req_buf->ConnectedNetwork.mcencryption =
 		mac_ctx->roam.roamSession[session_id].
 		connectedProfile.mcEncryptionType;
-	/* Copy the RSN capabilities in roam offload request from session*/
-	req_buf->rsn_caps = session->rsn_caps;
 
+	/* 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);
 	csr_rso_command_fill_11w_params(mac_ctx, session_id, req_buf);
 
 	req_buf->delay_before_vdev_stop =