Pārlūkot izejas kodu

qcacld-3.0: Avoid concurrency check if new link is dyn inact

Policy manager restricts three active home channels on same MAC and
if any two links of ML-STA falls under same MAC, then policy manager
sends force inactive num set to one which link bitmap of those two
links. FW will ensure to not make both the links active at the same.

In such cases when another VDEV comes up via concurrency on the same
MAC but with different frequency then, it will result in two active
VDEVs on same MAC. Now if FW decides to exchange the ML-STA links
which are sent in force inactive num via vdev repurpose, then
policy manager rejects this request and it see the upcoming link
will be in MCC with existing two frequencies (one from ML-STA and
another from concurrency) while actually the ML-STA link will
eventually becomes standby if vdev repupose is allowed.

For this reason, skip checking allow concurrency if the target
link in VDEV repurpose is part of dynamic inactive bitmap.

Change-Id: Ia7b1f798925c3ae02aceba68584dc02e44f2a514
CRs-Fixed: 3840955
Vinod Kumar Pirla 1 gadu atpakaļ
vecāks
revīzija
a03370fb39

+ 6 - 1
components/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c

@@ -6718,6 +6718,7 @@ policy_mgr_link_switch_notifier_cb(struct wlan_objmgr_vdev *vdev,
 			info[MAX_NUMBER_OF_CONC_CONNECTIONS] = { {0} };
 	uint8_t num_del = 0;
 	struct ml_nlink_change_event data;
+	uint16_t dyn_inact_bmap = 0, force_inact_bmap = 0;
 
 	if (notify_reason > MLO_LINK_SWITCH_NOTIFY_REASON_PRE_START_POST_SER)
 		return QDF_STATUS_SUCCESS;
@@ -6749,7 +6750,11 @@ policy_mgr_link_switch_notifier_cb(struct wlan_objmgr_vdev *vdev,
 		psoc, vdev_id, info, &num_del);
 	conc_ext_flags.value =
 	policy_mgr_get_conc_ext_flags(vdev, true);
-	if (!policy_mgr_is_concurrency_allowed(psoc, PM_STA_MODE,
+	ml_nlink_get_dynamic_inactive_links(psoc, vdev, &dyn_inact_bmap,
+					    &force_inact_bmap);
+
+	if (!(dyn_inact_bmap & BIT(new_ieee_link_id)) &&
+	    !policy_mgr_is_concurrency_allowed(psoc, PM_STA_MODE,
 					       new_primary_freq,
 					       HW_MODE_20_MHZ,
 					       conc_ext_flags.value,