Преглед изворни кода

qcacld-3.0: Consider only active links to handle eMLSR concurrency

Currently, eMLSR concurrency API considers both the links to
decide whether to allow or disallow the command while
force-enabling links. But one link might have got disabled to
handle some concurrency and might not be present in the
policy mgr table. Driver has to consider the links that are
present in policy mgr to allow/disallow link-enable command
when an eMLSR connection is present along with other concurrency.

Also, user might try to force-enable the disabled link. Allow
that only if eMLSR concurrency is not present.

Change-Id: I0a68059b7d16629016b3c40dbc0345523d46ef21
CRs-Fixed: 3500106
Srinivas Dasari пре 1 година
родитељ
комит
c35183ec87
1 измењених фајлова са 14 додато и 3 уклоњено
  1. 14 3
      components/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c

+ 14 - 3
components/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c

@@ -5944,6 +5944,18 @@ void policy_mgr_handle_emlsr_sta_concurrency(struct wlan_objmgr_psoc *psoc,
 					    num_mlo, mlo_vdev_lst);
 }
 
+static bool
+policy_mgr_is_emlsr_sta_concurrency_present(struct wlan_objmgr_psoc *psoc)
+{
+	uint8_t num_mlo = 0;
+
+	if (policy_mgr_is_mlo_in_mode_emlsr(psoc, NULL, &num_mlo) &&
+	    num_mlo < policy_mgr_get_connection_count(psoc))
+		return true;
+
+	return false;
+}
+
 static uint8_t
 policy_mgr_get_affected_links_for_sta_sta(struct wlan_objmgr_psoc *psoc,
 					  uint8_t num_ml, qdf_freq_t *freq_list,
@@ -7309,9 +7321,8 @@ void policy_mgr_activate_mlo_links(struct wlan_objmgr_psoc *psoc,
 	policy_mgr_debug("active vdev cnt: %d, inactive vdev cnt: %d",
 			 active_vdev_cnt, inactive_vdev_cnt);
 
-	if (policy_mgr_is_mlo_in_mode_emlsr(psoc, NULL, NULL) &&
-	    active_vdev_cnt > 1 &&
-	    policy_mgr_get_connection_count(psoc) > ml_vdev_cnt) {
+	if (active_vdev_cnt &&
+	    policy_mgr_is_emlsr_sta_concurrency_present(psoc)) {
 		policy_mgr_debug("Concurrency exists, cannot enter EMLSR mode");
 		goto done;
 	}