wlan: add ini parameters to configure BT-Multi profile parameters.

Add new ini  parameters to configure BT-Multi profile parameters.

Change-Id: Ib0ff68e3a0248a5dd8c3036550ea3b53523615b7
CRs-Fixed: 641676
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 0c7f03b..055fd07 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -2152,6 +2152,26 @@
 #define CFG_INITIAL_SCAN_SKIP_DFS_CH_MIN       (0)
 #define CFG_INITIAL_SCAN_SKIP_DFS_CH_MAX       (1)
 
+#define CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_NAME           "btcFatalHidnSniffBlkGuidance"
+#define CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_MIN            ( 0 )
+#define CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_MAX            ( 2 )
+#define CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_DEFAULT        ( 2 )
+
+#define CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_NAME        "btcCriticalHidnSniffBlkGuidance"
+#define CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_MIN         ( 0 )
+#define CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_MAX         ( 1 )
+#define CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_DEFAULT     ( 1 )
+
+#define CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_NAME                 "btcA2dpTxQueueThold"
+#define CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_MIN                  ( 0 )
+#define CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_MAX                  ( 1 )
+#define CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_DEFAULT              ( 0 )
+
+#define CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_NAME                  "btcOppTxQueueThold"
+#define CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_MIN                   ( 0 )
+#define CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_MAX                   ( 3 )
+#define CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_DEFAULT               ( 1 )
+
 /*--------------------------------------------------------------------------- 
   Type declarations
   -------------------------------------------------------------------------*/ 
@@ -2598,6 +2618,10 @@
 #endif
 
    v_BOOL_t                    initialScanSkipDFSCh;
+   v_U32_t                     cfgBtcFatalHidnSniffBlkGuidance;
+   v_U32_t                     cfgBtcCriticalHidnSniffBlkGuidance;
+   v_U32_t                     cfgBtcA2dpTxQueueThold;
+   v_U32_t                     cfgBtcOppTxQueueThold;
 } hdd_config_t;
 /*--------------------------------------------------------------------------- 
   Function declarations and documenation
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index 649d3c1..6ba2506 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -2987,6 +2987,34 @@
                CFG_INITIAL_SCAN_SKIP_DFS_CH_DEFAULT,
                CFG_INITIAL_SCAN_SKIP_DFS_CH_MIN,
                CFG_INITIAL_SCAN_SKIP_DFS_CH_MAX),
+
+   REG_VARIABLE(CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_NAME, WLAN_PARAM_Integer,
+                hdd_config_t, cfgBtcFatalHidnSniffBlkGuidance,
+                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_DEFAULT,
+                CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_MIN,
+                CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_MAX ),
+
+   REG_VARIABLE(CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_NAME, WLAN_PARAM_Integer,
+                hdd_config_t, cfgBtcCriticalHidnSniffBlkGuidance,
+                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_DEFAULT,
+                CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_MIN,
+                CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_MAX ),
+
+   REG_VARIABLE(CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_NAME, WLAN_PARAM_Integer,
+                hdd_config_t, cfgBtcA2dpTxQueueThold,
+                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_DEFAULT,
+                CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_MIN,
+                CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_MAX ),
+
+   REG_VARIABLE(CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_NAME, WLAN_PARAM_Integer,
+                hdd_config_t, cfgBtcOppTxQueueThold,
+                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_DEFAULT,
+                CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_MIN,
+                CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_MAX ),
 };
 
 /*
@@ -4696,6 +4724,46 @@
       hddLog(LOGE, "Could not pass on WNI_CFG_RA_FILTER_ENABLE to CCM");
    }
 
+   if (ccmCfgSetInt(pHddCtx->hHal,
+                    WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE,
+                    pConfig->cfgBtcFatalHidnSniffBlkGuidance,
+                    NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
+   {
+			       fStatus = FALSE;
+       hddLog(LOGE, "Could not pass on"
+                     "WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE to CCM");
+   }
+
+   if (ccmCfgSetInt(pHddCtx->hHal,
+                    WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE,
+                    pConfig->cfgBtcCriticalHidnSniffBlkGuidance,
+                    NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
+   {
+			       fStatus = FALSE;
+       hddLog(LOGE, "Could not pass on"
+                    "WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE to CCM");
+   }
+
+   if (ccmCfgSetInt(pHddCtx->hHal,
+                    WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD,
+                    pConfig->cfgBtcA2dpTxQueueThold,
+                    NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
+   {
+			       fStatus = FALSE;
+       hddLog(LOGE, "Could not pass on"
+                    "WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD to CCM");
+   }
+
+   if (ccmCfgSetInt(pHddCtx->hHal,
+                    WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD,
+                    pConfig->cfgBtcOppTxQueueThold,
+                    NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
+   {
+			       fStatus = FALSE;
+       hddLog(LOGE, "Could not pass on"
+                    "WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD to CCM");
+   }
+
    return fStatus;
 }
 
diff --git a/CORE/MAC/inc/wniCfgAp.h b/CORE/MAC/inc/wniCfgAp.h
index 8e842de..31d4837 100644
--- a/CORE/MAC/inc/wniCfgAp.h
+++ b/CORE/MAC/inc/wniCfgAp.h
@@ -374,6 +374,10 @@
 #define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL    327
 #define WNI_CFG_RA_FILTER_ENABLE    328
 #define WNI_CFG_RA_RATE_LIMIT_INTERVAL    329
+#define WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE    330
+#define WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE    331
+#define WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD    332
+#define WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD    333
 
 /*
  * String parameter lengths 
@@ -2765,10 +2769,42 @@
 #define WNI_CFG_RA_RATE_LIMIT_INTERVAL_APMAX    60
 #define WNI_CFG_RA_RATE_LIMIT_INTERVAL_APDEF    60
 
-#define CFG_PARAM_MAX_NUM         330
-#define CFG_AP_IBUF_MAX_SIZE      269
+#define WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_STAMIN    0
+#define WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_STAMAX    2
+#define WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_STADEF    2
+
+#define WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_APMIN    0
+#define WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_APMAX    2
+#define WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_APDEF    2
+
+#define WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_STAMIN    0
+#define WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_STAMAX    1
+#define WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_STADEF    1
+
+#define WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_APMIN    0
+#define WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_APMAX    1
+#define WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_APDEF    1
+
+#define WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_STAMIN    0
+#define WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_STAMAX    1
+#define WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_STADEF    0
+
+#define WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_APMIN    0
+#define WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_APMAX    1
+#define WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_APDEF    0
+
+#define WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_STAMIN    0
+#define WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_STAMAX    3
+#define WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_STADEF    1
+
+#define WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_APMIN    0
+#define WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_APMAX    3
+#define WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_APDEF    1
+
+#define CFG_PARAM_MAX_NUM         334
+#define CFG_AP_IBUF_MAX_SIZE      273
 #define CFG_AP_SBUF_MAX_SIZE      3422
-#define CFG_STA_IBUF_MAX_SIZE     264
+#define CFG_STA_IBUF_MAX_SIZE     268
 #define CFG_STA_SBUF_MAX_SIZE     3388
 #define CFG_SEM_MAX_NUM           19
 
diff --git a/CORE/MAC/inc/wniCfgSta.h b/CORE/MAC/inc/wniCfgSta.h
index b30bdcf..4d2e34d 100644
--- a/CORE/MAC/inc/wniCfgSta.h
+++ b/CORE/MAC/inc/wniCfgSta.h
@@ -368,6 +368,10 @@
 #define WNI_CFG_PMF_SA_QUERY_RETRY_INTERVAL    327
 #define WNI_CFG_RA_FILTER_ENABLE    328
 #define WNI_CFG_RA_RATE_LIMIT_INTERVAL    329
+#define WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE    330
+#define WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE    331
+#define WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD    332
+#define WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD    333
 
 /*
  * String parameter lengths 
@@ -1770,8 +1774,24 @@
 #define WNI_CFG_RA_RATE_LIMIT_INTERVAL_STAMAX    60
 #define WNI_CFG_RA_RATE_LIMIT_INTERVAL_STADEF    60
 
-#define CFG_PARAM_MAX_NUM        330
-#define CFG_STA_IBUF_MAX_SIZE    264
+#define WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_STAMIN    0
+#define WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_STAMAX    2
+#define WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE_STADEF    2
+
+#define WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_STAMIN    0
+#define WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_STAMAX    1
+#define WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE_STADEF    1
+
+#define WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_STAMIN    0
+#define WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_STAMAX    1
+#define WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD_STADEF    0
+
+#define WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_STAMIN    0
+#define WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_STAMAX    3
+#define WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD_STADEF    1
+
+#define CFG_PARAM_MAX_NUM        334
+#define CFG_STA_IBUF_MAX_SIZE    268
 #define CFG_STA_SBUF_MAX_SIZE    3388
 #define CFG_SEM_MAX_NUM          19
 
diff --git a/CORE/MAC/src/cfg/cfgParamName.c b/CORE/MAC/src/cfg/cfgParamName.c
index 9188021..1a59004 100644
--- a/CORE/MAC/src/cfg/cfgParamName.c
+++ b/CORE/MAC/src/cfg/cfgParamName.c
@@ -364,6 +364,10 @@
     (unsigned char *)"PMF_SA_QUERY_RETRY_INTERVAL",
     (unsigned char *)"RA_FILTER_ENABLE",
     (unsigned char *)"RA_RATE_LIMIT_INTERVAL",
+    (unsigned char *)"BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE",
+    (unsigned char *)"BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE",
+    (unsigned char *)"BTC_DYN_A2DP_TX_QUEUE_THOLD",
+    (unsigned char *)"BTC_DYN_OPP_TX_QUEUE_THOLD",
 };
 
 
diff --git a/CORE/MAC/src/cfg/cfgUtil/cfg.txt b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
index db5eee3..d3c63a3 100644
--- a/CORE/MAC/src/cfg/cfgUtil/cfg.txt
+++ b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
@@ -4880,3 +4880,51 @@
 V    RW     NP
 HAL
 0    60     60
+
+* BTC Fatal HID sniff block
+*
+WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE    I    4    7
+V    RW    NP
+HAL
+0    2    2
+V    RW    NP
+HAL
+0    2    2
+*
+*
+
+* BTC Critical HID sniff block
+*
+WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE    I    4    7
+V    RW    NP
+HAL
+0    1    1
+V    RW    NP
+HAL
+0    1    1
+*
+*
+
+* BTC DYN A2DP tx Q threshold
+*
+WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD    I    4    7
+V    RW    NP
+HAL
+0    1    0
+V    RW    NP
+HAL
+0    1    0
+*
+*
+
+* BTC DYN OPP tx Q threshold
+*
+WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD    I    4    7
+V    RW    NP
+HAL
+0    3    1
+V    RW    NP
+HAL
+0    3    1
+*
+*
diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c
index 5465f7e..5dbd380 100644
--- a/CORE/WDA/src/wlan_qct_wda.c
+++ b/CORE/WDA/src/wlan_qct_wda.c
@@ -1804,7 +1804,6 @@
                "Failed to get value for WNI_CFG_RA_FILTER_ENABLE");
       goto handle_failure;
    }
-
    tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
                            + sizeof(tHalCfg) + tlvStruct->length) ;
 
@@ -1820,7 +1819,66 @@
                "Failed to get value for WNI_CFG_RA_RATE_LIMIT_INTERVAL");
       goto handle_failure;
    }
+   tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+                            + sizeof(tHalCfg) + tlvStruct->length) ;
 
+   /* QWLAN_HAL_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE */
+   tlvStruct->type = QWLAN_HAL_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE ;
+   tlvStruct->length = sizeof(tANI_U32);
+   configDataValue = (tANI_U32 *)(tlvStruct + 1);
+
+   if (wlan_cfgGetInt(pMac, WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE,
+                                            configDataValue ) != eSIR_SUCCESS)
+   {
+      VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+               "Failed to get value for WNI_CFG_BTC_FATAL_HID_NSNIFF_BLK_GUIDANCE");
+      goto handle_failure;
+   }
+   tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+                            + sizeof(tHalCfg) + tlvStruct->length) ;
+
+  /* QWLAN_HAL_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE */
+   tlvStruct->type = QWLAN_HAL_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE ;
+   tlvStruct->length = sizeof(tANI_U32);
+   configDataValue = (tANI_U32 *)(tlvStruct + 1);
+
+   if (wlan_cfgGetInt(pMac, WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE,
+                                            configDataValue ) != eSIR_SUCCESS)
+   {
+      VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+               "Failed to get value for WNI_CFG_BTC_CRITICAL_HID_NSNIFF_BLK_GUIDANCE");
+      goto handle_failure;
+   }
+   tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+                            + sizeof(tHalCfg) + tlvStruct->length) ;
+
+   /* QWLAN_HAL_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD */
+   tlvStruct->type = QWLAN_HAL_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD ;
+   tlvStruct->length = sizeof(tANI_U32);
+   configDataValue = (tANI_U32 *)(tlvStruct + 1);
+
+   if (wlan_cfgGetInt(pMac, WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD,
+                                            configDataValue ) != eSIR_SUCCESS)
+   {
+      VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+               "Failed to get value for WNI_CFG_BTC_DYN_A2DP_TX_QUEUE_THOLD");
+      goto handle_failure;
+   }
+   tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+                            + sizeof(tHalCfg) + tlvStruct->length) ;
+
+   /* QWLAN_HAL_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD */
+   tlvStruct->type = QWLAN_HAL_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD ;
+   tlvStruct->length = sizeof(tANI_U32);
+   configDataValue = (tANI_U32 *)(tlvStruct + 1);
+
+   if (wlan_cfgGetInt(pMac, WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD,
+                                            configDataValue ) != eSIR_SUCCESS)
+   {
+      VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+               "Failed to get value for WNI_CFG_BTC_DYN_OPP_TX_QUEUE_THOLD");
+      goto handle_failure;
+   }
    tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
                            + sizeof(tHalCfg) + tlvStruct->length) ;
 
diff --git a/firmware_bin/WCNSS_cfg.dat b/firmware_bin/WCNSS_cfg.dat
index 6ae885a..324b379 100644
--- a/firmware_bin/WCNSS_cfg.dat
+++ b/firmware_bin/WCNSS_cfg.dat
Binary files differ