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

qcacmn: Pass vdev_id as an argument in policy_mgr_get_pcl()

Pass vdev_id as an argument in policy_mgr_get_pcl()

Change-Id: I047ec205632798a3e4e0da5ada6677764ae4f203
CRs-Fixed: 3412907
Jyoti Kumari 2 жил өмнө
parent
commit
48ed0b7680

+ 7 - 4
umac/dfs/dispatcher/src/wlan_dfs_utils_api.c

@@ -809,6 +809,7 @@ static void utils_dfs_get_channel_list(struct wlan_objmgr_pdev *pdev,
 	struct wlan_objmgr_psoc *psoc;
 	uint32_t conn_count = 0;
 	enum policy_mgr_con_mode mode;
+	uint8_t vdev_id = WLAN_INVALID_VDEV_ID;
 
 	psoc = wlan_pdev_get_psoc(pdev);
 	if (!psoc) {
@@ -820,20 +821,22 @@ static void utils_dfs_get_channel_list(struct wlan_objmgr_pdev *pdev,
 	len = QDF_ARRAY_SIZE(pcl_ch);
 	weight_len = QDF_ARRAY_SIZE(weight_list);
 
-	if (vdev)
+	if (vdev) {
 		mode = policy_mgr_convert_device_mode_to_qdf_type(
 				wlan_vdev_mlme_get_opmode(vdev));
-	else
+		vdev_id = wlan_vdev_get_id(vdev);
+	} else {
 		mode = PM_SAP_MODE;
+	}
 	conn_count = policy_mgr_mode_specific_connection_count(
 			psoc, mode, NULL);
 	if (0 == conn_count)
 		policy_mgr_get_pcl(psoc, mode, pcl_ch,
-				   &len, weight_list, weight_len);
+				   &len, weight_list, weight_len, vdev_id);
 	else
 		policy_mgr_get_pcl_for_existing_conn(
 			psoc, mode, pcl_ch, &len, weight_list,
-			weight_len, true);
+			weight_len, true, vdev_id);
 
 	if (*num_chan < len) {
 		dfs_err(NULL, WLAN_DEBUG_DFS_ALWAYS,

+ 8 - 4
umac/mlme/connection_mgr/core/src/wlan_cm_util.c

@@ -1526,22 +1526,26 @@ wlan_cm_id cm_get_cm_id_by_scan_id(struct cnx_mgr *cm_ctx,
 #ifdef WLAN_POLICY_MGR_ENABLE
 static void
 cm_get_pcl_chan_weigtage_for_sta(struct wlan_objmgr_pdev *pdev,
-				 struct pcl_freq_weight_list *pcl_lst)
+				 struct pcl_freq_weight_list *pcl_lst,
+				 struct wlan_objmgr_vdev *vdev)
 {
 	enum QDF_OPMODE opmode = QDF_STA_MODE;
 	enum policy_mgr_con_mode pm_mode;
 	uint32_t num_entries = 0;
+	uint8_t vdev_id;
 	QDF_STATUS status;
 
-	if (!pcl_lst)
+	if (!pcl_lst || !vdev)
 		return;
 
+	vdev_id = wlan_vdev_get_id(vdev);
+
 	if (policy_mgr_map_concurrency_mode(&opmode, &pm_mode)) {
 		status = policy_mgr_get_pcl(wlan_pdev_get_psoc(pdev), pm_mode,
 					    pcl_lst->pcl_freq_list,
 					    &num_entries,
 					    pcl_lst->pcl_weight_list,
-					    NUM_CHANNELS);
+					    NUM_CHANNELS, vdev_id);
 		if (QDF_IS_STATUS_ERROR(status))
 			return;
 		pcl_lst->num_of_pcl_channels = num_entries;
@@ -1556,7 +1560,7 @@ void cm_calculate_scores(struct cnx_mgr *cm_ctx,
 
 	if (!filter->num_of_bssid) {
 		pcl_lst = qdf_mem_malloc(sizeof(*pcl_lst));
-		cm_get_pcl_chan_weigtage_for_sta(pdev, pcl_lst);
+		cm_get_pcl_chan_weigtage_for_sta(pdev, pcl_lst, cm_ctx->vdev);
 		if (pcl_lst && !pcl_lst->num_of_pcl_channels) {
 			qdf_mem_free(pcl_lst);
 			pcl_lst = NULL;

+ 2 - 1
umac/regulatory/core/src/reg_services_common.c

@@ -3698,7 +3698,8 @@ reg_update_conn_chan_list(struct wlan_objmgr_pdev *pdev,
 	weight_len = NUM_CHANNELS;
 
 	status = policy_mgr_get_pcl(psoc, mode, pcl_ch, &len,
-				    weight_list, weight_len);
+				    weight_list, weight_len,
+				    WLAN_INVALID_VDEV_ID);
 	if (QDF_IS_STATUS_ERROR(status)) {
 		reg_err("get pcl failed for mode: %d", mode);
 		goto err;