Эх сурвалжийг харах

qcacmn: Fix params passed in vdev connect req

Fix params passed in vdev connect req and fix compilation issues.

Change-Id: I8d19c92f6768d1b2c0cdfd7997ba509a8ab87794
CRs-Fixed: 2806867
gaurank kathpalia 4 жил өмнө
parent
commit
abb7d72f97

+ 17 - 12
umac/mlme/connection_mgr/core/src/wlan_cm_connect.c

@@ -403,6 +403,18 @@ void cm_delete_pmksa_for_single_pmk_bssid(struct cnx_mgr *cm_ctx,
 }
 #endif /* WLAN_SAE_SINGLE_PMK && WLAN_FEATURE_ROAM_OFFLOAD */
 
+static inline void
+cm_set_pmf_caps(struct wlan_cm_connect_req *req, struct scan_filter *filter)
+{
+	if (req->crypto.rsn_caps & WLAN_CRYPTO_RSN_CAP_MFP_REQUIRED)
+		filter->pmf_cap = WLAN_PMF_REQUIRED;
+	else if (req->crypto.rsn_caps & WLAN_CRYPTO_RSN_CAP_MFP_ENABLED)
+		filter->pmf_cap = WLAN_PMF_CAPABLE;
+	else
+		filter->pmf_cap = WLAN_PMF_DISABLED;
+}
+
+#ifdef CONN_MGR_ADV_FEATURE
 #ifdef WLAN_FEATURE_FILS_SK
 /*
  * cm_create_fils_realm_hash: API to create hash using realm
@@ -511,18 +523,6 @@ static inline QDF_STATUS cm_set_fils_key(struct cnx_mgr *cm_ctx,
 }
 #endif /* WLAN_FEATURE_FILS_SK */
 
-static inline void
-cm_set_pmf_caps(struct wlan_cm_connect_req *req, struct scan_filter *filter)
-{
-	if (req->crypto.rsn_caps & WLAN_CRYPTO_RSN_CAP_MFP_REQUIRED)
-		filter->pmf_cap = WLAN_PMF_REQUIRED;
-	else if (req->crypto.rsn_caps & WLAN_CRYPTO_RSN_CAP_MFP_ENABLED)
-		filter->pmf_cap = WLAN_PMF_CAPABLE;
-	else
-		filter->pmf_cap = WLAN_PMF_DISABLED;
-}
-
-#ifdef CONN_MGR_ADV_FEATURE
 static QDF_STATUS
 cm_inform_blm_connect_complete(struct wlan_objmgr_vdev *vdev,
 			       struct wlan_cm_connect_rsp *resp)
@@ -1340,6 +1340,11 @@ cm_resume_connect_after_peer_create(struct cnx_mgr *cm_ctx, wlan_cm_id *cm_id)
 	req.assoc_ie = cm_req->connect_req.req.assoc_ie;
 	req.scan_ie = cm_req->connect_req.req.scan_ie;
 	req.bss = cm_req->connect_req.cur_candidate;
+	req.fils_info = &cm_req->connect_req.req.fils_info;
+	req.ht_caps = cm_req->connect_req.req.ht_caps;
+	req.ht_caps_mask = cm_req->connect_req.req.ht_caps_mask;
+	req.vht_caps = cm_req->connect_req.req.vht_caps;
+	req.vht_caps_mask = cm_req->connect_req.req.vht_caps_mask;
 
 	wlan_reg_get_cc_and_src(psoc, country_code);
 	mlme_nofl_info(CM_PREFIX_FMT "Connecting to %.*s " QDF_MAC_ADDR_FMT " rssi: %d freq: %d akm 0x%x cipher: uc 0x%x mc 0x%x, CC: %c%c",

+ 2 - 1
umac/mlme/connection_mgr/core/src/wlan_cm_disconnect.c

@@ -29,9 +29,10 @@
 
 void cm_send_disconnect_resp(struct cnx_mgr *cm_ctx, wlan_cm_id cm_id)
 {
-	struct wlan_cm_discon_rsp resp = {0};
+	struct wlan_cm_discon_rsp resp;
 	QDF_STATUS status;
 
+	qdf_mem_zero(&resp, sizeof(resp));
 	status = cm_fill_disconnect_resp_from_cm_id(cm_ctx, cm_id, &resp);
 	if (QDF_IS_STATUS_SUCCESS(status))
 		cm_disconnect_complete(cm_ctx, &resp);

+ 0 - 2
umac/mlme/connection_mgr/core/src/wlan_cm_main.h

@@ -100,7 +100,6 @@ struct cm_state_sm {
  * @cm_id: Connect manager id
  * @scan_id: scan id for scan for ssid
  * @req: connect req from osif
- * @rsn_ie: rsn_ie in connect req
  * @candidate_list: candidate list
  * @cur_candidate: current candidate
  * @cur_candidate_retries: attempts for current candidate
@@ -110,7 +109,6 @@ struct cm_connect_req {
 	wlan_cm_id cm_id;
 	wlan_scan_id scan_id;
 	struct wlan_cm_connect_req req;
-	struct element_info rsn_ie;
 	qdf_list_t *candidate_list;
 	struct scan_cache_node *cur_candidate;
 	uint8_t cur_candidate_retries;

+ 2 - 1
umac/mlme/connection_mgr/core/src/wlan_cm_util.c

@@ -421,8 +421,9 @@ cm_handle_connect_flush(struct cnx_mgr *cm_ctx, struct cm_req *cm_req)
 static void
 cm_handle_disconnect_flush(struct cnx_mgr *cm_ctx, struct cm_req *cm_req)
 {
-	struct wlan_cm_discon_rsp resp = {0};
+	struct wlan_cm_discon_rsp resp;
 
+	qdf_mem_zero(&resp, sizeof(resp));
 	resp.req.cm_id = cm_req->cm_id;
 	resp.req.req = cm_req->discon_req.req;
 

+ 15 - 3
umac/mlme/connection_mgr/dispatcher/inc/wlan_cm_public_struct.h

@@ -191,17 +191,29 @@ struct wlan_cm_connect_req {
  * used with out validation, used for the scenarios where the device is used
  * as a testbed device with special functionality and not recommended
  * for production.
+ * @ht_caps: ht capability
+ * @ht_caps_mask: mask of valid ht caps
+ * @vht_caps: vht capability
+ * @vht_caps_mask: mask of valid vht caps
  * @assoc_ie: assoc ie to be used in assoc req
  * @scan_ie: Default scan ie to be used in the uncast probe req
  * @bss: scan entry for the candidate
+ * @fils_info: Fills related connect info
  */
 struct wlan_cm_vdev_connect_req {
 	uint8_t vdev_id;
 	wlan_cm_id cm_id;
 	bool force_rsne_override;
+	uint16_t ht_caps;
+	uint16_t ht_caps_mask;
+	uint32_t vht_caps;
+	uint32_t vht_caps_mask;
 	struct element_info assoc_ie;
 	struct element_info scan_ie;
 	struct scan_cache_node *bss;
+#ifdef WLAN_FEATURE_FILS_SK
+	struct wlan_fils_con_info *fils_info;
+#endif
 };
 
 /**
@@ -311,9 +323,9 @@ struct fils_connect_rsp_params {
 
 /**
  * struct connect_rsp_ies - connect rsp ies stored in vdev filled during connect
- * @bcn_probe_rsp: beacon or probe rsp of connected AP
- * @assoc_req: assoc req send during conenct
- * @assoc_rsq: assoc rsp received during connection
+ * @bcn_probe_rsp: Raw beacon or probe rsp of connected AP
+ * @assoc_req: assoc req IE pointer send during conenct
+ * @assoc_rsq: assoc rsp IE received during connection
  * @ric_resp_ie: ric ie from assoc resp received during connection
  * @fills_ie: fills connection ie received during connection
  */

+ 3 - 0
umac/mlme/include/wlan_mlme_cmn.h

@@ -411,6 +411,9 @@ QDF_STATUS mlme_cm_bss_peer_create_req(struct wlan_objmgr_vdev *vdev,
  * @vdev: VDEV object
  * @req: Vdev connect request
  *
+ * Context: The req is on stack, so the API need to make a copy, if it want to
+ * use the req after return.
+ *
  * Return: QDF_STATUS
  */
 QDF_STATUS mlme_cm_connect_req(struct wlan_objmgr_vdev *vdev,