Browse Source

qcacld-3.0: Don't enable eMLSR STA link when concurrent AP is UP

Currently, host driver disables eMLSR STA link when a SAP is
coming UP. Once the SAP is UP, host driver evaluates the current
concurrencies and re-enables the link if it can. This allows the
driver to bring UP disabled link(if any) as the SAP would do SCC
with one of the ML-STA links. But this is not applicable for
eMLSR STA. No other concurrency can co-exist with eMLSR STA
currently. So, one link has to be force-disabled always to let
the firmware not enter into eMLSR mode.
So, don't allow the validation of current concurrencies in
policy_mgr_handle_sap_cli_go_ml_sta_up_csa() eMLSR API
policy_mgr_handle_emlsr_sta_concurrency() takes care of
eMLSR concurrencies.

Change-Id: I78a15447a8ea5a3a98146d9c9b577095bb8496de
CRs-Fixed: 3492030
Srinivas Dasari 1 year ago
parent
commit
9769f70f13

+ 13 - 5
components/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c

@@ -5834,9 +5834,6 @@ bool policy_mgr_is_mlo_in_mode_emlsr(struct wlan_objmgr_psoc *psoc,
 							  vdev_id_list,
 							  PM_STA_MODE);
 
-	if (!mode_num || mode_num < 2)
-		goto end;
-
 	for (i = 0; i < mode_num; i++) {
 		temp_vdev = wlan_objmgr_get_vdev_by_id_from_psoc(
 							psoc, vdev_id_list[i],
@@ -6555,8 +6552,7 @@ policy_mgr_handle_mcc_ml_sta(struct wlan_objmgr_psoc *psoc,
 	 * eMLSR is allowed in MCC mode also. So, don't disable any links
 	 * if current connection happens in eMLSR mode.
 	 */
-	if (policy_mgr_is_mlo_in_mode_emlsr(psoc, ml_sta_vdev_lst,
-					    &num_ml_sta)) {
+	if (policy_mgr_is_mlo_in_mode_emlsr(psoc, NULL, NULL)) {
 		policy_mgr_debug("Don't disable eMLSR links");
 		return QDF_STATUS_E_FAILURE;
 	}
@@ -6650,6 +6646,18 @@ policy_mgr_handle_sap_cli_go_ml_sta_up_csa(struct wlan_objmgr_psoc *psoc,
 				psoc, MLO_LINK_FORCE_REASON_CONNECT);
 	if (QDF_IS_STATUS_ERROR(status))
 		return;
+
+	/*
+	 * eMLSR API policy_mgr_handle_emlsr_sta_concurrency() takes care of
+	 * eMLSR concurrencies. Currently, eMLSR STA can't operate with any
+	 * cocurrent mode, i.e. one link gets force-disabled when a new
+	 * concurrecy is coming up.
+	 */
+	if (policy_mgr_is_mlo_in_mode_emlsr(psoc, NULL, NULL)) {
+		policy_mgr_debug("STA connected in eMLSR mode, don't enable/disable links");
+		return;
+	}
+
 	if (QDF_IS_STATUS_SUCCESS(policy_mgr_handle_mcc_ml_sta(psoc, vdev)))
 		return;