Просмотр исходного кода

qcacld-3.0: Do not update chainmask if LL_LT_SAP vdev is present

When LL_LT_SAP is running, MCC lite needs to run in the hal-phy,
since MCC lite does not support dynamic chainmask update, do not
update chainmask if LL_LT_SAP vdev is present.

Change-Id: Ia7c38fbce88f0a236d96bfc21ae3206e88d0b323
CRs-Fixed: 3653697
Ashish Kumar Dhanotiya 1 год назад
Родитель
Сommit
2411a3851a
2 измененных файлов с 21 добавлено и 0 удалено
  1. 10 0
      core/hdd/src/wlan_hdd_cfg80211.c
  2. 11 0
      core/sme/src/common/sme_api.c

+ 10 - 0
core/hdd/src/wlan_hdd_cfg80211.c

@@ -212,6 +212,7 @@
 #include <wlan_mlo_mgr_link_switch.h>
 #include <wlan_hdd_ll_lt_sap.h>
 #include "wlan_cp_stats_mc_defs.h"
+#include "wlan_policy_mgr_ll_sap.h"
 
 /*
  * A value of 100 (milliseconds) can be sent to FW.
@@ -28213,6 +28214,7 @@ static int __wlan_hdd_cfg80211_set_chainmask(struct wiphy *wiphy,
 	enum hdd_chain_mode chains;
 	struct dev_set_param setparam[MAX_PDEV_TXRX_PARAMS] = {};
 	uint8_t index = 0;
+	uint8_t ll_lt_sap_vdev_id;
 
 	ret = wlan_hdd_validate_context(hdd_ctx);
 	if (ret)
@@ -28232,6 +28234,14 @@ static int __wlan_hdd_cfg80211_set_chainmask(struct wiphy *wiphy,
 		return -EINVAL;
 	}
 
+	ll_lt_sap_vdev_id =
+			wlan_policy_mgr_get_ll_lt_sap_vdev_id(hdd_ctx->psoc);
+	if (ll_lt_sap_vdev_id != WLAN_INVALID_VDEV_ID) {
+		hdd_info_rl("LL_LT_SAP vdev %d present, chainmask config not allowed",
+			    ll_lt_sap_vdev_id);
+		return -ENOTSUPP;
+	}
+
 	if (sme_validate_txrx_chain_mask(wmi_pdev_param_tx_chain_mask, tx_mask))
 		return -EINVAL;
 

+ 11 - 0
core/sme/src/common/sme_api.c

@@ -86,6 +86,7 @@
 #include "wlan_psoc_mlme_ucfg_api.h"
 #include <wlan_mlo_link_force.h>
 #include "wma_eht.h"
+#include "wlan_policy_mgr_ll_sap.h"
 
 static QDF_STATUS init_sme_cmd_list(struct mac_context *mac);
 
@@ -4744,11 +4745,21 @@ sme_nss_chains_update(mac_handle_t mac_handle,
 		       wlan_objmgr_get_vdev_by_id_from_psoc(mac_ctx->psoc,
 							    vdev_id,
 							    WLAN_LEGACY_SME_ID);
+	uint8_t ll_lt_sap_vdev_id;
+
 	if (!vdev) {
 		sme_err("Got NULL vdev obj, returning");
 		return QDF_STATUS_E_FAILURE;
 	}
 
+	ll_lt_sap_vdev_id =
+			wlan_policy_mgr_get_ll_lt_sap_vdev_id(mac_ctx->psoc);
+	if (ll_lt_sap_vdev_id != WLAN_INVALID_VDEV_ID) {
+		sme_info_rl("LL_LT_SAP vdev %d present, chainmask config not allowed",
+			    ll_lt_sap_vdev_id);
+		return QDF_STATUS_E_FAILURE;
+	}
+
 	status = sme_acquire_global_lock(&mac_ctx->sme);
 	if (QDF_IS_STATUS_ERROR(status))
 		goto release_ref;