Quellcode durchsuchen

qcacld-3.0: Fill join request from cm vdev connect request

Currently driver fills join request from cm_vdev_connect request
and cm_vdev_connect request is filled from connect request.

Fill join request directly from cm vdev connect
request and update the vdev connect request from scan entry for
assoc vdev and for link vdev copy populate the connect request
directly from cm_connect request.

Change-Id: I408eb8044e96437558666a1948233a0df30bfd22
CRs-Fixed: 3516716
Pragaspathi Thilagaraj vor 1 Jahr
Ursprung
Commit
15bc1d6db6

+ 14 - 0
components/umac/mlme/connection_mgr/core/src/wlan_cm_vdev_api.h

@@ -750,4 +750,18 @@ cm_send_rso_stop(struct wlan_objmgr_vdev *vdev)
 	return QDF_STATUS_E_NOSUPPORT;
 }
 #endif
+
+#ifdef WLAN_FEATURE_11BE_MLO
+/**
+ * cm_get_ml_partner_info() - Fill dst ML partner info
+ * @scan_entry: Scan entry
+ * @src_partner_info: Source partner info
+ * @dst_partner_info: Destination partner info
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS
+cm_get_ml_partner_info(struct scan_cache_entry *scan_entry,
+		       struct mlo_partner_info *partner_info);
+#endif
 #endif /* __WLAN_CM_VDEV_API_H__ */

+ 9 - 24
components/umac/mlme/connection_mgr/core/src/wlan_cm_vdev_connect.c

@@ -1114,7 +1114,7 @@ QDF_STATUS cm_flush_join_req(struct scheduler_msg *msg)
 }
 
 #ifdef WLAN_FEATURE_11BE_MLO
-static  QDF_STATUS
+QDF_STATUS
 cm_get_ml_partner_info(struct scan_cache_entry *scan_entry,
 		       struct mlo_partner_info *partner_info)
 {
@@ -1135,6 +1135,7 @@ cm_get_ml_partner_info(struct scan_cache_entry *scan_entry,
 		mlme_debug("psoc is NULL");
 		return QDF_STATUS_E_INVAL;
 	}
+
 	mlo_support_link_num = wlan_mlme_get_sta_mlo_conn_max_num(psoc);
 	mlme_debug("sta mlo support link num: %d", mlo_support_link_num);
 
@@ -1152,8 +1153,9 @@ cm_get_ml_partner_info(struct scan_cache_entry *scan_entry,
 			   scan_entry->ml_info.link_info[i].is_valid_link,
 			   QDF_MAC_ADDR_REF(
 			   scan_entry->ml_info.link_info[i].link_addr.bytes));
-		if (j >= mlo_support_link_num - 1)
+		if (mlo_support_link_num && j >= mlo_support_link_num - 1)
 			break;
+
 		if (scan_entry->ml_info.link_info[i].is_valid_link) {
 			partner_info->partner_link_info[j].link_addr =
 				scan_entry->ml_info.link_info[i].link_addr;
@@ -1162,10 +1164,12 @@ cm_get_ml_partner_info(struct scan_cache_entry *scan_entry,
 			partner_info->partner_link_info[j].chan_freq =
 				scan_entry->ml_info.link_info[i].freq;
 			j++;
-		} else {
-			scan_entry->ml_info.link_info[i].is_valid_link = false;
+			continue;
 		}
+
+		scan_entry->ml_info.link_info[i].is_valid_link = false;
 	}
+
 	partner_info->num_partner_links = j;
 	mlme_debug("sta and ap integrate link num: %d", j);
 
@@ -1174,17 +1178,6 @@ cm_get_ml_partner_info(struct scan_cache_entry *scan_entry,
 	return QDF_STATUS_SUCCESS;
 }
 
-static void cm_fill_ml_info(struct cm_vdev_join_req *join_req)
-{
-	QDF_STATUS ret;
-
-	ret = cm_get_ml_partner_info(join_req->entry, &join_req->partner_info);
-	if (QDF_IS_STATUS_SUCCESS(ret)) {
-		join_req->assoc_link_id = join_req->entry->ml_info.self_link_id;
-		mlme_debug("Assoc link ID:%d", join_req->assoc_link_id);
-	}
-}
-
 static void cm_copy_join_req_info_from_cm_connect_req(struct cm_vdev_join_req *join_req,
 						 struct wlan_cm_vdev_connect_req *req)
 {
@@ -1193,10 +1186,6 @@ static void cm_copy_join_req_info_from_cm_connect_req(struct cm_vdev_join_req *j
 }
 
 #else
-static void cm_fill_ml_info(struct cm_vdev_join_req *join_req)
-{
-}
-
 static void cm_copy_join_req_info_from_cm_connect_req(struct cm_vdev_join_req *join_req,
 						 struct wlan_cm_vdev_connect_req *req)
 {
@@ -1228,11 +1217,7 @@ cm_copy_join_params(struct wlan_objmgr_vdev *vdev,
 	if (!join_req->entry)
 		return QDF_STATUS_E_NOMEM;
 
-	if (wlan_vdev_mlme_is_mlo_link_vdev(vdev)) {
-		cm_copy_join_req_info_from_cm_connect_req(join_req, req);
-	} else {
-		cm_fill_ml_info(join_req);
-	}
+	cm_copy_join_req_info_from_cm_connect_req(join_req, req);
 
 	if (req->owe_trans_ssid.length)
 		join_req->owe_trans_ssid = req->owe_trans_ssid;