qcacld-3.0: Add new ini file for chainmask feature

Add New inis for nss, chains, and disable_diversity
values.

Change-Id: I837d64f58d3c2386b43ee3cdcc095f7833954c12
CRs-Fixed: 2347385
diff --git a/components/mlme/dispatcher/inc/cfg_mlme_nss_chains.h b/components/mlme/dispatcher/inc/cfg_mlme_nss_chains.h
new file mode 100644
index 0000000..a4d47e7
--- /dev/null
+++ b/components/mlme/dispatcher/inc/cfg_mlme_nss_chains.h
@@ -0,0 +1,554 @@
+/*
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC: This file contains centralized definitions of converged configuration.
+ */
+
+#ifndef __CFG_MLME_NSS_CHAINS
+#define __CFG_MLME_NSS_CHAINS
+
+/*
+ * <ini>
+ * num_tx_chains_2g - Config Param to change number of tx
+ * chains per vdev for 2.4ghz frequency connections
+ * @Min: 0x01249249
+ * @Max: 0x02492492
+ * @Default: 0x02492492
+ *
+ * This ini is used to change the num of chains for eg:-
+ * 0x01249249 - change all vdev's num tx chains for 2.4ghz connection to 1 each
+ * 0x02492492 - change all vdev's num tx chains for 2.4ghz connection to 2 each
+ * Bits          VDEV Type
+ * BIT[0:2]        STA
+ * BIT[3:5]        SAP
+ * BIT[6:8]        P2P GO
+ * BIT[9:11]       P2P Client
+ * BIT[12:14]      TDLS
+ * BIT[15:17]      IBSS
+ * BIT[18:20]      P2P device
+ * BIT[21:23]      OCB
+ * BIT[24:26]      NAN
+ * BIT[27:31]      Reserved
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_NUM_TX_CHAINS_2G CFG_INI_UINT( \
+				"num_tx_chains_2g", \
+				0x01249249, \
+				0x02492492, \
+				0x02492492, \
+				CFG_VALUE_OR_DEFAULT, \
+				"num tx chains 2g")
+
+/*
+ * <ini>
+ * num_tx_chains_5g - Config Param to change number of tx
+ * chains per vdev for 5 ghz frequency connections
+ * @Min: 0x01249249
+ * @Max: 0x02492492
+ * @Default: 0x02492492
+ *
+ * This ini is used to change the num of chains for eg:-
+ * 0x01249249- change all vdev's tx num chains for 5ghz connection to 1 each
+ * 0x02492492 - change all vdev's tx num chains for 5ghz connection to 2 each
+ * Bits          VDEV Type
+ * BIT[0:2]        STA
+ * BIT[3:5]        SAP
+ * BIT[6:8]        P2P GO
+ * BIT[9:11]       P2P Client
+ * BIT[12:14]      TDLS
+ * BIT[15:17]      IBSS
+ * BIT[18:20]      P2P device
+ * BIT[21:23]      OCB
+ * BIT[24:26]      NAN
+ * BIT[27:31]      Reserved
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_NUM_TX_CHAINS_5G CFG_INI_UINT( \
+				"num_tx_chains_5g", \
+				0x01249249, \
+				0x02492492, \
+				0x02492492, \
+				CFG_VALUE_OR_DEFAULT, \
+				"num tx chains 5g")
+
+/*
+ * <ini>
+ * num_rx_chains_2g - Config Param to change number of rx
+ * chains per vdev for 2.4 ghz frequency connections
+ * @Min: 0x01249249
+ * @Max: 0x02492492
+ * @Default: 0x02492492
+ *
+ * This ini is used to change the num of chains for eg:-
+ * 0x01249249 - change all vdev's rx num chains for 2.4ghz connections to 1 each
+ * 0x02492492 - change all vdev's rx num chains for 2.4ghz connections to 2 each
+ * Bits          VDEV Type
+ * BIT[0:2]        STA
+ * BIT[3:5]        SAP
+ * BIT[6:8]        P2P GO
+ * BIT[9:11]       P2P Client
+ * BIT[12:14]      TDLS
+ * BIT[15:17]      IBSS
+ * BIT[18:20]      P2P device
+ * BIT[21:23]      OCB
+ * BIT[24:26]      NAN
+ * BIT[27:31]      Reserved
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_NUM_RX_CHAINS_2G CFG_INI_UINT( \
+				"num_rx_chains_2g", \
+				0x01249249, \
+				0x02492492, \
+				0x02492492, \
+				CFG_VALUE_OR_DEFAULT, \
+				"num rx chains 2g")
+
+/*
+ * <ini>
+ * num_rx_chains_5g - Config Param to change number of rx
+ * chains per vdev for 5 ghz frequency connections
+ * @Min: 0x01249249
+ * @Max: 0x02492492
+ * @Default: 0x02492492
+ *
+ * This ini is used to change the num of chains for eg:-
+ * 0x01249249 - change all vdev's rx num chains for 5ghz connections to 1 each
+ * 0x02492492 - change all vdev's rx num chains for 5ghz connections to 2 each
+ * Bits          VDEV Type
+ * BIT[0:2]        STA
+ * BIT[3:5]        SAP
+ * BIT[6:8]        P2P GO
+ * BIT[9:11]       P2P Client
+ * BIT[12:14]      TDLS
+ * BIT[15:17]      IBSS
+ * BIT[18:20]      P2P device
+ * BIT[21:23]      OCB
+ * BIT[24:26]      NAN
+ * BIT[27:31]      Reserved
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_NUM_RX_CHAINS_5G CFG_INI_UINT( \
+				"num_rx_chains_5g", \
+				0x01249249, \
+				0x02492492, \
+				0x02492492, \
+				CFG_VALUE_OR_DEFAULT, \
+				"num rx chains 5g")
+
+/*
+ * <ini>
+ * tx_nss_2g - Config Param to change tx nss
+ * per vdev for 2.4ghz frequency connections
+ * @Min: 0x01249249
+ * @Max: 0x02492492
+ * @Default: 0x02492492
+ *
+ * This ini is used to change the num of tx spatial streams for eg:-
+ * 0x01249249 - change all vdev's tx nss for 2.4ghz connections to 1 each
+ * 0x02492492 - change all vdev's tx nss for 2.4ghz connections to 2 each
+ * Bits          VDEV Type
+ * BIT[0:2]        STA
+ * BIT[3:5]        SAP
+ * BIT[6:8]        P2P GO
+ * BIT[9:11]       P2P Client
+ * BIT[12:14]      TDLS
+ * BIT[15:17]      IBSS
+ * BIT[18:20]      P2P device
+ * BIT[21:23]      OCB
+ * BIT[24:26]      NAN
+ * BIT[27:31]      Reserved
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_TX_NSS_2G CFG_INI_UINT( \
+				"tx_nss_2g", \
+				0x01249249, \
+				0x02492492, \
+				0x02492492, \
+				CFG_VALUE_OR_DEFAULT, \
+				"tx nss 2.4ghz")
+
+/*
+ * <ini>
+ * tx_nss_5g - Config Param to change tx nss
+ * per vdev for 5ghz frequency connections
+ * @Min: 0x01249249
+ * @Max: 0x02492492
+ * @Default: 0x02492492
+ *
+ * This ini is used to change the num of tx spatial streams for eg:-
+ * 0x01249249 - change all vdev's tx nss for 5ghz connections to 1 each
+ * 0x02492492 - change all vdev's tx nss for 5ghz connections to 2 each
+ * Bits          VDEV Type
+ * BIT[0:2]        STA
+ * BIT[3:5]        SAP
+ * BIT[6:8]        P2P GO
+ * BIT[9:11]       P2P Client
+ * BIT[12:14]      TDLS
+ * BIT[15:17]      IBSS
+ * BIT[18:20]      P2P device
+ * BIT[21:23]      OCB
+ * BIT[24:26]      NAN
+ * BIT[27:31]      Reserved
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_TX_NSS_5G CFG_INI_UINT( \
+				"tx_nss_5g", \
+				0x01249249, \
+				0x02492492, \
+				0x02492492, \
+				CFG_VALUE_OR_DEFAULT, \
+				"tx nss 5ghz")
+
+/*
+ * <ini>
+ * rx_nss_2g - Config Param to change rx nss
+ * per vdev for 2.4ghz frequency connections
+ *
+ * @Min: 0x01249249
+ * @Max: 0x02492492
+ * @Default: 0x02492492
+ *
+ * This ini is used to change the num of rx spatial streams for eg:-
+ * 0x01249249 - change all vdev's rx nss for 2.4ghz connections to 1 each
+ * 0x02492492 - change all vdev's rx nss for 2.4ghz connections to 2 each
+ * Bits          VDEV Type
+ * BIT[0:2]        STA
+ * BIT[3:5]        SAP
+ * BIT[6:8]        P2P GO
+ * BIT[9:11]       P2P Client
+ * BIT[12:14]      TDLS
+ * BIT[15:17]      IBSS
+ * BIT[18:20]      P2P device
+ * BIT[21:23]      OCB
+ * BIT[24:26]      NAN
+ * BIT[27:31]      Reserved
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_RX_NSS_2G CFG_INI_UINT( \
+				"rx_nss_2g", \
+				0x01249249, \
+				0x02492492, \
+				0x02492492, \
+				CFG_VALUE_OR_DEFAULT, \
+				"rx nss 2.4ghz")
+
+/*
+ * <ini>
+ * rx_nss_5g - Config Param to change rx nss
+ * per vdev for 5ghz frequency connections
+ * @Min: 0x01249249
+ * @Max: 0x02492492
+ * @Default: 0x02492492
+ *
+ * This ini is used to change the num of rx spatial streams for eg:-
+ * 0x01249249 - change all vdev's rx nss for 5ghz connections to 1 each
+ * 0x02492492 - change all vdev's rx nss for 5ghz connections to 2 each
+ * Bits          VDEV Type
+ * BIT[0:2]        STA
+ * BIT[3:5]        SAP
+ * BIT[6:8]        P2P GO
+ * BIT[9:11]       P2P Client
+ * BIT[12:14]      TDLS
+ * BIT[15:17]      IBSS
+ * BIT[18:20]      P2P device
+ * BIT[21:23]      OCB
+ * BIT[24:26]      NAN
+ * BIT[27:31]      Reserved
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_RX_NSS_5G CFG_INI_UINT( \
+				"rx_nss_5g", \
+				0x01249249, \
+				0x02492492, \
+				0x02492492, \
+				CFG_VALUE_OR_DEFAULT, \
+				"rx nss 5ghz")
+
+/*
+ * <ini>
+ * num_tx_chains_11b - Config Param to change number of tx
+ * chains per vdev for 2.4ghz 11b mode connections
+ * @Min: 0x01249249
+ * @Max: 0x02492492
+ * @Default: 0x02492492
+ *
+ * This ini is used to change the num of chains for eg:-
+ * 0x01249249 - change all vdev's num chains for 11b connections to 1 each
+ * 0x02492492 - change all vdev's num chains for 11b connections to 2 each
+ * Bits          VDEV Type
+ * BIT[0:2]        STA
+ * BIT[3:5]        SAP
+ * BIT[6:8]        P2P GO
+ * BIT[9:11]       P2P Client
+ * BIT[12:14]      TDLS
+ * BIT[15:17]      IBSS
+ * BIT[18:20]      P2P device
+ * BIT[21:23]      OCB
+ * BIT[24:26]      NAN
+ * BIT[27:31]      Reserved
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_NUM_TX_CHAINS_11b CFG_INI_UINT( \
+				"num_tx_chains_11b", \
+				0x01249249, \
+				0x02492492, \
+				0x02492492, \
+				CFG_VALUE_OR_DEFAULT, \
+				"num tx chains 11b")
+
+/*
+ * <ini>
+ * num_tx_chains_11g - Config Param to change number of tx
+ * chains per vdev for 2.4ghz 11g mode connections
+ * @Min: 0x01249249
+ * @Max: 0x02492492
+ * @Default: 0x02492492
+ *
+ * This ini is used to change the num of chains for eg:-
+ * 0x01249249 - change all vdev's num chains for 11g connections to 1 each
+ * 0x02492492 - change all vdev's num chains for 11g connections to 2 each
+ * Bits          VDEV Type
+ * BIT[0:2]        STA
+ * BIT[3:5]        SAP
+ * BIT[6:8]        P2P GO
+ * BIT[9:11]       P2P Client
+ * BIT[12:14]      TDLS
+ * BIT[15:17]      IBSS
+ * BIT[18:20]      P2P device
+ * BIT[21:23]      OCB
+ * BIT[24:26]      NAN
+ * BIT[27:31]      Reserved
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_NUM_TX_CHAINS_11g CFG_INI_UINT( \
+				"num_tx_chains_11g", \
+				0x01249249, \
+				0x02492492, \
+				0x02492492, \
+				CFG_VALUE_OR_DEFAULT, \
+				"num tx chains 11g")
+
+/*
+ * <ini>
+ * num_tx_chains_11a - Config Param to change number of tx
+ * chains per vdev for 5ghz 11a mode connections
+ * @Min: 0x01249249
+ * @Max: 0x02492492
+ * @Default: 0x02492492
+ *
+ * This ini is used to change the num of chains for eg:-
+ * 0x01249249 - change all vdev's num chains for 11a connections to 1 each
+ * 0x02492492 - change all vdev's num chains for 11a connections to 2 each
+ * Bits          VDEV Type
+ * BIT[0:2]        STA
+ * BIT[3:5]        SAP
+ * BIT[6:8]        P2P GO
+ * BIT[9:11]       P2P Client
+ * BIT[12:14]      TDLS
+ * BIT[15:17]      IBSS
+ * BIT[18:20]      P2P device
+ * BIT[21:23]      OCB
+ * BIT[24:26]      NAN
+ * BIT[27:31]      Reserved
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_NUM_TX_CHAINS_11a CFG_INI_UINT( \
+				"num_tx_chains_11a", \
+				0x01249249, \
+				0x02492492, \
+				0x02492492, \
+				CFG_VALUE_OR_DEFAULT, \
+				"num tx chains 11a")
+
+/*
+ * <ini>
+ * disable_tx_mrc_2g - Config Param to disable 2 chains in 1x1 nss mode
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_DISABLE_TX_MRC_2G CFG_INI_BOOL( \
+				"disable_tx_mrc_2g", \
+				0, \
+				"disable diversity gain tx 2g")
+
+/*
+ * <ini>
+ * disable_rx_mrc_2g - Config Param to disable 2 chains in 1x1 nss mode
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_DISABLE_RX_MRC_2G CFG_INI_BOOL( \
+				"disable_rx_mrc_2g", \
+				0, \
+				"disable diversity gain rx 2g")
+
+/*
+ * <ini>
+ * disable_tx_mrc_5g - Config Param to disable 2 chains in 1x1 nss mode
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_DISABLE_TX_MRC_5G CFG_INI_BOOL( \
+				"disable_tx_mrc_5g", \
+				0, \
+				"disable diversity gain tx 5g")
+
+/*
+ * <ini>
+ * disable_rx_mrc_5g - Config Param to disable 2 chains in 1x1 nss mode
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * Related: STA/SAP/P2P/IBSS/NAN.
+ *
+ * Supported Feature: Dynamic chainmask
+ *
+ * Usage: External
+ *
+ * </ini>
+ */
+#define CFG_DISABLE_RX_MRC_5G CFG_INI_BOOL( \
+				"disable_rx_mrc_5g", \
+				0, \
+				"disable diversity gain rx 5g")
+
+#define CFG_NSS_CHAINS_ALL \
+	CFG(CFG_NUM_TX_CHAINS_2G) \
+	CFG(CFG_NUM_TX_CHAINS_5G) \
+	CFG(CFG_NUM_RX_CHAINS_2G) \
+	CFG(CFG_NUM_RX_CHAINS_5G) \
+	CFG(CFG_TX_NSS_5G) \
+	CFG(CFG_TX_NSS_2G) \
+	CFG(CFG_RX_NSS_5G) \
+	CFG(CFG_RX_NSS_2G) \
+	CFG(CFG_NUM_TX_CHAINS_11b) \
+	CFG(CFG_NUM_TX_CHAINS_11g) \
+	CFG(CFG_NUM_TX_CHAINS_11a) \
+	CFG(CFG_DISABLE_TX_MRC_2G) \
+	CFG(CFG_DISABLE_RX_MRC_2G) \
+	CFG(CFG_DISABLE_TX_MRC_5G) \
+	CFG(CFG_DISABLE_RX_MRC_5G)
+
+#endif /* __CFG_MLME_NSS_CHAINS */
+