Procházet zdrojové kódy

qcacld-3.0: Populate ini params in mlme_cfg

Populate the ini params from ini file and store them
in mlme_cfg structure.

Change-Id: I3eb8e60e26deeb24228d9b8a24bb957478344492
CRs-Fixed: 2347505
gaurank kathpalia před 6 roky
rodič
revize
6c9d1c3e70

+ 28 - 0
components/mlme/core/src/wlan_mlme_main.c

@@ -1259,6 +1259,33 @@ static void mlme_init_oce_cfg(struct wlan_objmgr_psoc *psoc,
 	oce->feature_bitmap = val;
 }
 
+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_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);
+}
 static void mlme_init_wep_keys(struct wlan_mlme_wep_cfg *wep_params)
 {
 	/* initialize the default key values to zero */
@@ -1413,6 +1440,7 @@ QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)
 	mlme_init_chainmask_cfg(psoc, &mlme_cfg->chainmask_cfg);
 	mlme_init_sap_cfg(psoc, &mlme_cfg->sap_cfg);
 	mlme_init_he_cap_in_cfg(psoc, &mlme_cfg->he_caps);
+	mlme_init_nss_chains(psoc, &mlme_cfg->nss_chains_ini_cfg);
 	mlme_init_obss_ht40_cfg(psoc, &mlme_cfg->obss_ht40);
 	mlme_init_product_details_cfg(&mlme_cfg->product_details);
 	mlme_init_sta_cfg(psoc, &mlme_cfg->sta);

+ 2 - 0
components/mlme/dispatcher/inc/cfg_mlme.h

@@ -33,6 +33,7 @@
 #include "cfg_mlme_obss_ht40.h"
 #include "cfg_mlme_dfs.h"
 #include "cfg_mlme_mbo.h"
+#include "cfg_mlme_nss_chains.h"
 #include "cfg_mlme_vht_caps.h"
 #include "cfg_qos.h"
 #include "cfg_mlme_timeout.h"
@@ -61,6 +62,7 @@
 	CFG_LFR_ALL \
 	CFG_MBO_ALL \
 	CFG_MLME_PRODUCT_DETAILS_ALL \
+	CFG_NSS_CHAINS_ALL \
 	CFG_OBSS_HT40_ALL \
 	CFG_OCE_ALL \
 	CFG_QOS_ALL \

+ 41 - 0
components/mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -1025,6 +1025,45 @@ enum dot11p_mode {
 	CFG_11P_CONCURRENT,
 };
 
+/**
+ * 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
+ */
+enum nss_chains_band_info {
+	BAND_2GHZ = 0,
+	BAND_5GHZ,
+	BAND_MAX,
+};
+
+#define MAX_VDEV_NSS                2
+#define MAX_VDEV_CHAINS             2
+
+/**
+ * struct wlan_mlme_nss_chains -     MLME vdev config of nss, and chains
+ * @num_tx_chains:                   tx chains of vdev config
+ * @num_rx_chains:                   rx chains of vdev config
+ * @tx_nss:                          tx nss of vdev config
+ * @rx_nss:                          rx nss of vdev config
+ * @num_tx_chains_11b:               number of tx chains in 11b mode
+ * @num_tx_chains_11g:               number of tx chains in 11g mode
+ * @num_tx_chains_11a:               number of tx chains in 11a mode
+ * @disable_rx_mrc:                  disable 2 rx chains, in rx nss 1 mode
+ * @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_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];
+};
+
 /**
  * struct wlan_mlme_sta_cfg - MLME STA configuration items
  * @sta_keep_alive_period:          Sends NULL frame to AP period
@@ -1498,6 +1537,7 @@ struct wlan_mlme_wep_cfg {
  * @dfs_cfg: DFS related CFG Items
  * @sap_protection_cfg: SAP erp protection related CFG items
  * @sap_cfg: sap CFG items
+ * @nss_chains_ini_cfg: Per vdev nss, chains related CFG items
  * @sta: sta CFG Items
  * @scoring: BSS Scoring related CFG Items
  * @oce: OCE related CFG items
@@ -1525,6 +1565,7 @@ struct wlan_mlme_cfg {
 	struct wlan_mlme_dfs_cfg dfs_cfg;
 	struct wlan_mlme_sap_protection sap_protection_cfg;
 	struct wlan_mlme_cfg_sap sap_cfg;
+	struct wlan_mlme_nss_chains nss_chains_ini_cfg;
 	struct wlan_mlme_sta_cfg sta;
 	struct wlan_mlme_scoring_cfg scoring;
 	struct wlan_mlme_oce oce;