Переглянути джерело

qcacld-3.0: Add prefix NSS_CHAINS to band info

Add prefix NSS_CHAINS to band info to remove duplicate band
info in driver, and minor code cleanup.

Change-Id: I3a8446af6b6c272cfcb19583540e2384f64e3a1a
CRs-Fixed: 2347624
gaurank kathpalia 6 роки тому
батько
коміт
b414bce3b7

+ 23 - 20
components/mlme/core/src/wlan_mlme_main.c

@@ -1262,29 +1262,32 @@ static void mlme_init_oce_cfg(struct wlan_objmgr_psoc *psoc,
 static void mlme_init_nss_chains(struct wlan_objmgr_psoc *psoc,
 				 struct wlan_mlme_nss_chains *nss_chains)
 {
-	nss_chains->num_rx_chains[BAND_2GHZ] = cfg_get(psoc,
-						       CFG_NUM_RX_CHAINS_2G);
-	nss_chains->num_rx_chains[BAND_5GHZ] = cfg_get(psoc,
-						       CFG_NUM_RX_CHAINS_5G);
-	nss_chains->num_tx_chains[BAND_2GHZ] = cfg_get(psoc,
-						       CFG_NUM_TX_CHAINS_2G);
-	nss_chains->num_tx_chains[BAND_5GHZ] = cfg_get(psoc,
-						       CFG_NUM_TX_CHAINS_5G);
-	nss_chains->tx_nss[BAND_2GHZ] = cfg_get(psoc, CFG_TX_NSS_2G);
-	nss_chains->tx_nss[BAND_5GHZ] = cfg_get(psoc, CFG_TX_NSS_5G);
-	nss_chains->rx_nss[BAND_2GHZ] = cfg_get(psoc, CFG_RX_NSS_2G);
-	nss_chains->rx_nss[BAND_5GHZ] = cfg_get(psoc, CFG_RX_NSS_5G);
+	nss_chains->num_rx_chains[NSS_CHAINS_BAND_2GHZ] =
+					    cfg_get(psoc, CFG_NUM_RX_CHAINS_2G);
+	nss_chains->num_rx_chains[NSS_CHAINS_BAND_5GHZ] =
+					    cfg_get(psoc, CFG_NUM_RX_CHAINS_5G);
+	nss_chains->num_tx_chains[NSS_CHAINS_BAND_2GHZ] =
+					    cfg_get(psoc, CFG_NUM_TX_CHAINS_2G);
+	nss_chains->num_tx_chains[NSS_CHAINS_BAND_5GHZ] =
+					    cfg_get(psoc, CFG_NUM_TX_CHAINS_5G);
+
+	nss_chains->tx_nss[NSS_CHAINS_BAND_2GHZ] = cfg_get(psoc, CFG_TX_NSS_2G);
+	nss_chains->tx_nss[NSS_CHAINS_BAND_5GHZ] = cfg_get(psoc, CFG_TX_NSS_5G);
+	nss_chains->rx_nss[NSS_CHAINS_BAND_2GHZ] = cfg_get(psoc, CFG_RX_NSS_2G);
+	nss_chains->rx_nss[NSS_CHAINS_BAND_5GHZ] = cfg_get(psoc, CFG_RX_NSS_5G);
+
 	nss_chains->num_tx_chains_11b = cfg_get(psoc, CFG_NUM_TX_CHAINS_11b);
 	nss_chains->num_tx_chains_11g = cfg_get(psoc, CFG_NUM_TX_CHAINS_11g);
 	nss_chains->num_tx_chains_11a = cfg_get(psoc, CFG_NUM_TX_CHAINS_11a);
-	nss_chains->disable_rx_mrc[BAND_2GHZ] = cfg_get(psoc,
-							CFG_DISABLE_RX_MRC_2G);
-	nss_chains->disable_rx_mrc[BAND_5GHZ] = cfg_get(psoc,
-							CFG_DISABLE_RX_MRC_5G);
-	nss_chains->disable_tx_mrc[BAND_2GHZ] = cfg_get(psoc,
-							CFG_DISABLE_TX_MRC_2G);
-	nss_chains->disable_tx_mrc[BAND_5GHZ] = cfg_get(psoc,
-							CFG_DISABLE_TX_MRC_5G);
+
+	nss_chains->disable_rx_mrc[NSS_CHAINS_BAND_2GHZ] =
+					   cfg_get(psoc, CFG_DISABLE_RX_MRC_2G);
+	nss_chains->disable_rx_mrc[NSS_CHAINS_BAND_5GHZ] =
+					   cfg_get(psoc, CFG_DISABLE_RX_MRC_5G);
+	nss_chains->disable_tx_mrc[NSS_CHAINS_BAND_2GHZ] =
+					   cfg_get(psoc, CFG_DISABLE_TX_MRC_2G);
+	nss_chains->disable_tx_mrc[NSS_CHAINS_BAND_5GHZ] =
+					   cfg_get(psoc, CFG_DISABLE_TX_MRC_5G);
 }
 static void mlme_init_wep_keys(struct wlan_mlme_wep_cfg *wep_params)
 {

+ 12 - 12
components/mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -1027,14 +1027,14 @@ enum dot11p_mode {
 
 /**
  * enum nss_chains_band_info - Band info for dynamic nss, chains change feature
- * @BAND_2GHZ: 2.4Ghz band
- * @BAND_5GHZ: 5Ghz band
- * @BAND_MAX: Max bands supported
+ * @NSS_CHAINS_BAND_2GHZ: 2.4Ghz band
+ * @NSS_CHAINS_BAND_5GHZ: 5Ghz band
+ * @NSS_CHAINS_BAND_MAX: Max bands supported
  */
 enum nss_chains_band_info {
-	BAND_2GHZ = 0,
-	BAND_5GHZ,
-	BAND_MAX,
+	NSS_CHAINS_BAND_2GHZ = 0,
+	NSS_CHAINS_BAND_5GHZ,
+	NSS_CHAINS_BAND_MAX,
 };
 
 #define MAX_VDEV_NSS                2
@@ -1053,15 +1053,15 @@ enum nss_chains_band_info {
  * @disable_tx_mrc:                  disable 2 tx chains, in tx nss 1 mode
  */
 struct wlan_mlme_nss_chains {
-	uint32_t num_tx_chains[BAND_MAX];
-	uint32_t num_rx_chains[BAND_MAX];
-	uint32_t tx_nss[BAND_MAX];
-	uint32_t rx_nss[BAND_MAX];
+	uint32_t num_tx_chains[NSS_CHAINS_BAND_MAX];
+	uint32_t num_rx_chains[NSS_CHAINS_BAND_MAX];
+	uint32_t tx_nss[NSS_CHAINS_BAND_MAX];
+	uint32_t rx_nss[NSS_CHAINS_BAND_MAX];
 	uint32_t num_tx_chains_11b;
 	uint32_t num_tx_chains_11g;
 	uint32_t num_tx_chains_11a;
-	bool disable_rx_mrc[BAND_MAX];
-	bool disable_tx_mrc[BAND_MAX];
+	bool disable_rx_mrc[NSS_CHAINS_BAND_MAX];
+	bool disable_tx_mrc[NSS_CHAINS_BAND_MAX];
 };
 
 /**

+ 31 - 0
components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h

@@ -27,6 +27,7 @@
 #include <wlan_objmgr_global_obj.h>
 #include <wlan_cmn.h>
 #include <wlan_mlme_api.h>
+#include <wlan_mlme_vdev_mgr_interface.h>
 
 /**
  * ucfg_mlme_init() - initialize mlme_ctx context.
@@ -1567,6 +1568,36 @@ ucfg_mlme_get_vht_tx_mcs_2x2(struct wlan_objmgr_psoc *psoc, uint8_t *value)
 	return wlan_mlme_get_vht_tx_mcs_2x2(psoc, value);
 }
 
+/**
+ * ucfg_mlme_get_ini_vdev_config() - get the ini capability of vdev
+ * @vdev: pointer to the vdev obj
+ *
+ * This API will get the ini config of the vdev related to
+ * the nss, chains params
+ *
+ * Return: pointer to the nss, chain param ini cfg structure
+ */
+static inline struct wlan_mlme_nss_chains *
+ucfg_mlme_get_ini_vdev_config(struct wlan_objmgr_vdev *vdev)
+{
+	return mlme_get_ini_vdev_config(vdev);
+}
+
+/**
+ * ucfg_mlme_get_dynamic_vdev_config() - get the dynamic capability of vdev
+ * @vdev: pointer to the vdev obj
+ *
+ * This API will get the dynamic config of the vdev related to nss,
+ * chains params
+ *
+ * Return: pointer to the nss, chain param dynamic cfg structure
+ */
+static inline struct wlan_mlme_nss_chains *
+ucfg_mlme_get_dynamic_vdev_config(struct wlan_objmgr_vdev *vdev)
+{
+	return mlme_get_dynamic_vdev_config(vdev);
+}
+
 /**
  * ucfg_mlme_get_vht20_mcs9() - Enables VHT MCS9 in 20M BW operation
  * @psoc: psoc context

+ 1 - 1
core/hdd/src/wlan_hdd_cfg.c

@@ -4376,7 +4376,7 @@ hdd_set_nss_params(struct hdd_adapter *adapter,
 		return QDF_STATUS_E_FAILURE;
 	}
 
-	for (band = BAND_2GHZ; band < NUM_OF_BANDS; band++)
+	for (band = NSS_CHAINS_BAND_2GHZ; band < NSS_CHAINS_BAND_MAX; band++)
 		hdd_populate_vdev_nss(&user_cfg, tx_nss,
 				      rx_nss, band);
 	if (QDF_IS_STATUS_ERROR(

+ 6 - 4
core/hdd/src/wlan_hdd_ioctl.c

@@ -6663,7 +6663,7 @@ hdd_populate_vdev_chains(struct wlan_mlme_nss_chains *nss_chains_cfg,
 	nss_chains_cfg->num_rx_chains[band] = rx_chains;
 	nss_chains_cfg->num_tx_chains[band] = tx_chains;
 
-	dynamic_cfg = mlme_get_dynamic_vdev_config(vdev);
+	dynamic_cfg = ucfg_mlme_get_dynamic_vdev_config(vdev);
 	if (!dynamic_cfg) {
 		hdd_err("nss chain dynamic config NULL");
 		return QDF_STATUS_E_FAILURE;
@@ -6708,7 +6708,7 @@ hdd_set_dynamic_antenna_mode(struct hdd_adapter *adapter,
 	}
 
 	qdf_mem_zero(&user_cfg, sizeof(user_cfg));
-	for (band = BAND_2GHZ; band < BAND_MAX; band++) {
+	for (band = NSS_CHAINS_BAND_2GHZ; band < NSS_CHAINS_BAND_MAX; band++) {
 		status = hdd_populate_vdev_chains(&user_cfg,
 						  num_rx_chains,
 						  num_tx_chains, band,
@@ -6817,6 +6817,7 @@ exit:
 
 	return ret;
 }
+
 /**
  * drv_cmd_set_antenna_mode() - SET ANTENNA MODE driver command
  * handler
@@ -6867,7 +6868,7 @@ hdd_get_dynamic_antenna_mode(uint32_t *antenna_mode,
 	if (!dynamic_nss_chains_support)
 		return;
 
-	nss_chains_dynamic_cfg = mlme_get_dynamic_vdev_config(vdev);
+	nss_chains_dynamic_cfg = ucfg_mlme_get_dynamic_vdev_config(vdev);
 	if (!nss_chains_dynamic_cfg) {
 		hdd_err("nss chain dynamic config NULL");
 		return;
@@ -6876,7 +6877,8 @@ hdd_get_dynamic_antenna_mode(uint32_t *antenna_mode,
 	 * At present, this command doesn't include band, so by default
 	 * it will return the band 2ghz present rf chains.
 	 */
-	*antenna_mode = nss_chains_dynamic_cfg->num_rx_chains[BAND_2GHZ];
+	*antenna_mode =
+		nss_chains_dynamic_cfg->num_rx_chains[NSS_CHAINS_BAND_2GHZ];
 }
 
 /**

+ 4 - 5
core/hdd/src/wlan_hdd_main.c

@@ -4049,14 +4049,13 @@ hdd_store_nss_chains_cfg_in_vdev(struct hdd_adapter *adapter)
 	struct wlan_mlme_nss_chains vdev_ini_cfg;
 	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
 
-	/* store the ini config in vdev component in mlme priv structure */
+	/* Populate the nss chain params from ini for this vdev type */
 	sme_populate_nss_chain_params(hdd_ctx->mac_handle, &vdev_ini_cfg,
 				      adapter->device_mode,
 				      hdd_ctx->num_rf_chains);
-	qdf_mem_copy(mlme_get_dynamic_vdev_config(adapter->vdev),
-		     &vdev_ini_cfg, sizeof(struct wlan_mlme_nss_chains));
-	qdf_mem_copy(mlme_get_ini_vdev_config(adapter->vdev),
-		     &vdev_ini_cfg, sizeof(struct wlan_mlme_nss_chains));
+
+	/* Store the nss chain config into the vdev */
+	sme_store_nss_chains_cfg_in_vdev(adapter->vdev, &vdev_ini_cfg);
 }
 
 bool hdd_is_vdev_in_conn_state(struct hdd_adapter *adapter)

+ 8 - 6
core/mac/src/pe/lim/lim_utils.c

@@ -5924,7 +5924,7 @@ static inline bool lim_get_rx_ldpc(tpAniSirGlobal mac_ctx, enum channel_enum ch)
  * @vdev_id: vdev for which IE is targeted
  * @band: band for which the MCS set has to be updated
  *
- * This funciton updates the MCS set according to vdev nss
+ * This function updates the MCS set according to vdev nss
  *
  * Return: None
  */
@@ -5965,7 +5965,7 @@ end:
  * @vdev_id: vdev for which IE is targeted
  * @band: band for which the MCS set has to be updated
  *
- * This funciton updates the MCS set according to vdev nss
+ * This function updates the MCS set according to vdev nss
  *
  * Return: None
  */
@@ -6052,7 +6052,8 @@ QDF_STATUS lim_send_ies_per_band(tpAniSirGlobal mac_ctx,
 		p_ht_cap->supportedChannelWidthSet = 0;
 		p_ht_cap->shortGI40MHz = 0;
 	}
-	lim_populate_mcs_set_ht_per_vdev(mac_ctx, p_ht_cap, vdev_id, BAND_2GHZ);
+	lim_populate_mcs_set_ht_per_vdev(mac_ctx, p_ht_cap, vdev_id,
+					 NSS_CHAINS_BAND_2GHZ);
 	lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_HTCAPS,
 		CDS_BAND_2GHZ, &ht_caps[2], DOT11F_IE_HTCAPS_MIN_LEN);
 	/*
@@ -6068,7 +6069,8 @@ QDF_STATUS lim_send_ies_per_band(tpAniSirGlobal mac_ctx,
 		p_ht_cap->supportedChannelWidthSet = 0;
 		p_ht_cap->shortGI40MHz = 0;
 	}
-	lim_populate_mcs_set_ht_per_vdev(mac_ctx, p_ht_cap, vdev_id, BAND_5GHZ);
+	lim_populate_mcs_set_ht_per_vdev(mac_ctx, p_ht_cap, vdev_id,
+					 NSS_CHAINS_BAND_5GHZ);
 	lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_HTCAPS,
 		CDS_BAND_5GHZ, &ht_caps[2], DOT11F_IE_HTCAPS_MIN_LEN);
 
@@ -6082,7 +6084,7 @@ QDF_STATUS lim_send_ies_per_band(tpAniSirGlobal mac_ctx,
 	 */
 	p_vht_cap->ldpcCodingCap = lim_get_rx_ldpc(mac_ctx, CHAN_ENUM_64);
 	lim_populate_mcs_set_vht_per_vdev(mac_ctx, vht_caps,
-					  vdev_id, BAND_5GHZ);
+					  vdev_id, NSS_CHAINS_BAND_5GHZ);
 
 	/* Self VHT channel width for 5G is already negotiated with FW */
 	lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_VHTCAPS,
@@ -6095,7 +6097,7 @@ QDF_STATUS lim_send_ies_per_band(tpAniSirGlobal mac_ctx,
 	p_vht_cap->shortGI80MHz = 0;
 	p_vht_cap->shortGI160and80plus80MHz = 0;
 	lim_populate_mcs_set_vht_per_vdev(mac_ctx, vht_caps,
-					  vdev_id, BAND_2GHZ);
+					  vdev_id, NSS_CHAINS_BAND_2GHZ);
 	lim_send_ie(mac_ctx, vdev_id, DOT11F_EID_VHTCAPS,
 			CDS_BAND_2GHZ, &vht_caps[2], DOT11F_IE_VHTCAPS_MIN_LEN);
 

+ 15 - 1
core/sme/inc/sme_api.h

@@ -331,7 +331,7 @@ QDF_STATUS sme_stop(mac_handle_t mac_handle);
  * @rf_chains_supported: number of chains supported by fw(updated during
  *                       service ready event)
  *
- * This API will fill the nss chain params for the particlar vdev from ini
+ * This API will fill the nss chain params for the particular vdev from ini
  * configuration for the respective vdev.
  *
  * Return: none
@@ -341,6 +341,20 @@ void sme_populate_nss_chain_params(mac_handle_t mac_handle,
 			     enum QDF_OPMODE device_mode,
 			     uint8_t rf_chains_supported);
 
+/**
+ * sme_store_nss_chains_cfg_in_vdev() - fill vdev nss chain params from ini
+ * @vdev: Pointer to vdev obj
+ * @vdev_ini_cfg: pointer to the structure the values are to be filled from
+ *
+ * This API will copy the nss chain params for the particular vdev from ini
+ * configuration to the respective vdev's dynamic, and ini config.
+ *
+ * Return: none
+ */
+void
+sme_store_nss_chains_cfg_in_vdev(struct wlan_objmgr_vdev *vdev,
+				 struct wlan_mlme_nss_chains *vdev_ini_cfg);
+
 /**
  * sme_nss_chains_update() - validate and send the user params to fw
  * @mac_handle: The handle returned by mac_open.

+ 29 - 10
core/sme/src/common/sme_api.c

@@ -4875,12 +4875,32 @@ void sme_populate_nss_chain_params(mac_handle_t mac_handle,
 	struct sAniSirGlobal *mac_ctx = MAC_CONTEXT(mac_handle);
 	enum nss_chains_band_info band;
 
-	for (band = BAND_2GHZ; band < BAND_MAX; band++)
+	for (band = NSS_CHAINS_BAND_2GHZ; band < NSS_CHAINS_BAND_MAX; band++)
 		sme_fill_nss_chain_params(mac_ctx, vdev_ini_cfg,
 					  device_mode, band,
 					  rf_chains_supported);
 }
 
+void
+sme_store_nss_chains_cfg_in_vdev(struct wlan_objmgr_vdev *vdev,
+				 struct wlan_mlme_nss_chains *vdev_ini_cfg)
+{
+	struct wlan_mlme_nss_chains *ini_cfg;
+	struct wlan_mlme_nss_chains *dynamic_cfg;
+
+	ini_cfg = mlme_get_ini_vdev_config(vdev);
+	dynamic_cfg = mlme_get_dynamic_vdev_config(vdev);
+
+	if (!ini_cfg || !dynamic_cfg) {
+		sme_err("Nss chains ini/dynamic config NULL vdev_id %d",
+					     vdev->vdev_objmgr.vdev_id);
+		return;
+	}
+
+	*ini_cfg = *vdev_ini_cfg;
+	*dynamic_cfg = *vdev_ini_cfg;
+}
+
 static void
 sme_populate_user_config(struct wlan_mlme_nss_chains *dynamic_cfg,
 			 struct wlan_mlme_nss_chains *user_cfg,
@@ -4991,19 +5011,19 @@ sme_validate_user_nss_chain_params(
 	 */
 
 	if (user_cfg->num_tx_chains_11a >
-	    user_cfg->num_tx_chains[BAND_5GHZ])
+	    user_cfg->num_tx_chains[NSS_CHAINS_BAND_5GHZ])
 		user_cfg->num_tx_chains_11a =
-			user_cfg->num_tx_chains[BAND_5GHZ];
+			user_cfg->num_tx_chains[NSS_CHAINS_BAND_5GHZ];
 
 	if (user_cfg->num_tx_chains_11b >
-	    user_cfg->num_tx_chains[BAND_2GHZ])
+	    user_cfg->num_tx_chains[NSS_CHAINS_BAND_2GHZ])
 		user_cfg->num_tx_chains_11b =
-			user_cfg->num_tx_chains[BAND_2GHZ];
+			user_cfg->num_tx_chains[NSS_CHAINS_BAND_2GHZ];
 
 	if (user_cfg->num_tx_chains_11g >
-	    user_cfg->num_tx_chains[BAND_2GHZ])
+	    user_cfg->num_tx_chains[NSS_CHAINS_BAND_2GHZ])
 		user_cfg->num_tx_chains_11g =
-			user_cfg->num_tx_chains[BAND_2GHZ];
+			user_cfg->num_tx_chains[NSS_CHAINS_BAND_2GHZ];
 
 	return QDF_STATUS_SUCCESS;
 }
@@ -5023,7 +5043,7 @@ sme_validate_nss_chains_config(struct wlan_objmgr_vdev *vdev,
 		return QDF_STATUS_E_FAILURE;
 	}
 
-	for (band = BAND_2GHZ; band < BAND_MAX; band++) {
+	for (band = NSS_CHAINS_BAND_2GHZ; band < NSS_CHAINS_BAND_MAX; band++) {
 		sme_populate_user_config(dynamic_cfg,
 					 user_cfg, band);
 		status = sme_validate_from_ini_config(user_cfg,
@@ -5092,8 +5112,7 @@ sme_nss_chains_update(mac_handle_t mac_handle,
 		goto release_lock;
 	}
 
-	qdf_mem_copy(dynamic_cfg, user_cfg,
-		     sizeof(struct wlan_mlme_nss_chains));
+	*dynamic_cfg = *user_cfg;
 
 release_lock:
 	sme_release_global_lock(&mac_ctx->sme);

+ 1 - 1
core/wma/src/wma_utils.c

@@ -4411,7 +4411,7 @@ QDF_STATUS wma_send_vdev_stop_to_fw(t_wma_handle *wma, uint8_t vdev_id)
 		return status;
 	}
 
-	/**
+	/*
 	 * Reset the dynamic nss chains config to the ini values, as when the
 	 * vdev gets its started again, this would be a fresh connection,
 	 * and we dont want the config of previous connection to affect the