Configurig WLAN/BT interval of BTC as tunable parameters from host

This gerrit provides the option to configure WLAN/BT interval of BTC
in both STA/SAP mode.

Change-Id: Ia8ffbc350a937b34a6aa951552431aad44895e2b
CRs-Fixed: 516956
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index fd15ea9..a2aa8ba 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -1416,6 +1416,26 @@
 #define CFG_ENABLE_SSR_MAX                  ( 1 )
 #define CFG_ENABLE_SSR_DEFAULT              ( 1 )
 
+#define CFG_BTC_ACTIVE_WLAN_LEN_NAME           "btcActiveWlanLen"
+#define CFG_BTC_ACTIVE_WLAN_LEN_MIN            ( 0 )
+#define CFG_BTC_ACTIVE_WLAN_LEN_MAX            ( 250000 )
+#define CFG_BTC_ACTIVE_WLAN_LEN_DEFAULT        ( 60000 )
+
+#define CFG_BTC_ACTIVE_BT_LEN_NAME             "btcActiveBtLen"
+#define CFG_BTC_ACTIVE_BT_LEN_MIN              ( 0 )
+#define CFG_BTC_ACTIVE_BT_LEN_MAX              ( 250000 )
+#define CFG_BTC_ACTIVE_BT_LEN_DEFAULT          ( 90000 )
+
+#define CFG_BTC_SAP_ACTIVE_WLAN_LEN_NAME       "btcSapActiveWlanLen"
+#define CFG_BTC_SAP_ACTIVE_WLAN_LEN_MIN        ( 0 )
+#define CFG_BTC_SAP_ACTIVE_WLAN_LEN_MAX        ( 250000 )
+#define CFG_BTC_SAP_ACTIVE_WLAN_LEN_DEFAULT    ( 60000 )
+
+#define CFG_BTC_SAP_ACTIVE_BT_LEN_NAME         "btcSapActiveBtLen"
+#define CFG_BTC_SAP_ACTIVE_BT_LEN_MIN          ( 0 )
+#define CFG_BTC_SAP_ACTIVE_BT_LEN_MAX          ( 250000 )
+#define CFG_BTC_SAP_ACTIVE_BT_LEN_DEFAULT      ( 90000 )
+
 /*
  * VOS Trace Enable Control
  * Notes:
@@ -2353,6 +2373,10 @@
    v_U8_t                      nSelect5GHzMargin;
    v_U8_t                      isCoalesingInIBSSAllowed;
    v_BOOL_t                    cfgAthDisable;
+   v_U32_t                     cfgBtcActiveWlanLen;
+   v_U32_t                     cfgBtcActiveBtLen;
+   v_U32_t                     cfgBtcSapActiveWlanLen;
+   v_U32_t                     cfgBtcSapActiveBtLen;
 } 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 a46e9cd..b02bccf 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -2819,6 +2819,33 @@
                  CFG_DISABLE_ATH_DEFAULT,
                  CFG_DISABLE_ATH_MIN,
                  CFG_DISABLE_ATH_MAX ),
+   REG_VARIABLE(CFG_BTC_ACTIVE_WLAN_LEN_NAME, WLAN_PARAM_Integer,
+                hdd_config_t, cfgBtcActiveWlanLen,
+                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                CFG_BTC_ACTIVE_WLAN_LEN_DEFAULT,
+                CFG_BTC_ACTIVE_WLAN_LEN_MIN,
+                CFG_BTC_ACTIVE_WLAN_LEN_MAX ),
+
+   REG_VARIABLE(CFG_BTC_ACTIVE_BT_LEN_NAME, WLAN_PARAM_Integer,
+                hdd_config_t, cfgBtcActiveBtLen,
+                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                CFG_BTC_ACTIVE_BT_LEN_DEFAULT,
+                CFG_BTC_ACTIVE_BT_LEN_MIN,
+                CFG_BTC_ACTIVE_BT_LEN_MAX ),
+
+   REG_VARIABLE(CFG_BTC_SAP_ACTIVE_WLAN_LEN_NAME, WLAN_PARAM_Integer,
+                hdd_config_t, cfgBtcSapActiveWlanLen,
+                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                CFG_BTC_SAP_ACTIVE_WLAN_LEN_DEFAULT,
+                CFG_BTC_SAP_ACTIVE_WLAN_LEN_MIN,
+                CFG_BTC_SAP_ACTIVE_WLAN_LEN_MAX ),
+
+   REG_VARIABLE(CFG_BTC_SAP_ACTIVE_BT_LEN_NAME, WLAN_PARAM_Integer,
+                hdd_config_t, cfgBtcSapActiveBtLen,
+                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                CFG_BTC_SAP_ACTIVE_BT_LEN_DEFAULT,
+                CFG_BTC_SAP_ACTIVE_BT_LEN_MIN,
+                CFG_BTC_SAP_ACTIVE_BT_LEN_MAX ),
 };
 
 /*
@@ -4379,6 +4406,42 @@
       fStatus = FALSE;
       hddLog(LOGE, "Could not pass on WNI_CFG_ATH_DISABLE to CCM");
    }
+
+  if (ccmCfgSetInt(pHddCtx->hHal,
+                    WNI_CFG_BTC_ACTIVE_WLAN_LEN,
+                    pConfig->cfgBtcActiveWlanLen,
+                    NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
+   {
+       fStatus = FALSE;
+       hddLog(LOGE, "Could not pass on WNI_BTC_ACTIVE_WLAN_LEN to CCM");
+   }
+
+   if (ccmCfgSetInt(pHddCtx->hHal,
+                    WNI_CFG_BTC_ACTIVE_BT_LEN,
+                    pConfig->cfgBtcActiveBtLen,
+                    NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
+   {
+       fStatus = FALSE;
+       hddLog(LOGE, "Could not pass on WNI_BTC_ACTIVE_BT_LEN to CCM");
+   }
+
+   if (ccmCfgSetInt(pHddCtx->hHal,
+                    WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN,
+                    pConfig->cfgBtcSapActiveWlanLen,
+                    NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
+   {
+       fStatus = FALSE;
+       hddLog(LOGE, "Could not pass on WNI_BTC_ACTIVE_WLAN_LEN to CCM");
+   }
+
+   if (ccmCfgSetInt(pHddCtx->hHal,
+                    WNI_CFG_BTC_SAP_ACTIVE_BT_LEN,
+                    pConfig->cfgBtcSapActiveBtLen,
+                    NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
+   {
+       fStatus = FALSE;
+       hddLog(LOGE, "Could not pass on WNI_BTC_ACTIVE_BT_LEN to CCM");
+   }
    return fStatus;
 }
 
diff --git a/CORE/MAC/inc/wniCfgAp.h b/CORE/MAC/inc/wniCfgAp.h
index cb481b9..84d45b0 100644
--- a/CORE/MAC/inc/wniCfgAp.h
+++ b/CORE/MAC/inc/wniCfgAp.h
@@ -364,6 +364,10 @@
 #define WNI_CFG_ANTENNA_DIVESITY    304
 #define WNI_CFG_GO_LINK_MONITOR_TIMEOUT    305
 #define WNI_CFG_ATH_DISABLE    306
+#define WNI_CFG_BTC_ACTIVE_WLAN_LEN    307
+#define WNI_CFG_BTC_ACTIVE_BT_LEN    308
+#define WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN    309
+#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN    310
 
 /*
  * String parameter lengths 
@@ -2571,10 +2575,42 @@
 #define WNI_CFG_ATH_DISABLE_APMAX    1
 #define WNI_CFG_ATH_DISABLE_APDEF    0
 
-#define CFG_PARAM_MAX_NUM         307
-#define CFG_AP_IBUF_MAX_SIZE      246
+#define WNI_CFG_BTC_ACTIVE_WLAN_LEN_STAMIN    0
+#define WNI_CFG_BTC_ACTIVE_WLAN_LEN_STAMAX    250000
+#define WNI_CFG_BTC_ACTIVE_WLAN_LEN_STADEF    60000
+
+#define WNI_CFG_BTC_ACTIVE_WLAN_LEN_APMIN    0
+#define WNI_CFG_BTC_ACTIVE_WLAN_LEN_APMAX    250000
+#define WNI_CFG_BTC_ACTIVE_WLAN_LEN_APDEF    60000
+
+#define WNI_CFG_BTC_ACTIVE_BT_LEN_STAMIN    0
+#define WNI_CFG_BTC_ACTIVE_BT_LEN_STAMAX    250000
+#define WNI_CFG_BTC_ACTIVE_BT_LEN_STADEF    90000
+
+#define WNI_CFG_BTC_ACTIVE_BT_LEN_APMIN    0
+#define WNI_CFG_BTC_ACTIVE_BT_LEN_APMAX    250000
+#define WNI_CFG_BTC_ACTIVE_BT_LEN_APDEF    90000
+
+#define WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN_STAMIN    0
+#define WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN_STAMAX    250000
+#define WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN_STADEF    60000
+
+#define WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN_APMIN    0
+#define WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN_APMAX    250000
+#define WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN_APDEF    60000
+
+#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_STAMIN    0
+#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_STAMAX    250000
+#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_STADEF    90000
+
+#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_APMIN    0
+#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_APMAX    250000
+#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_APDEF    90000
+
+#define CFG_PARAM_MAX_NUM         311
+#define CFG_AP_IBUF_MAX_SIZE      250
 #define CFG_AP_SBUF_MAX_SIZE      3422
-#define CFG_STA_IBUF_MAX_SIZE     241
+#define CFG_STA_IBUF_MAX_SIZE     245
 #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 84218bd..bb5898c 100644
--- a/CORE/MAC/inc/wniCfgSta.h
+++ b/CORE/MAC/inc/wniCfgSta.h
@@ -358,6 +358,10 @@
 #define WNI_CFG_ANTENNA_DIVESITY    304
 #define WNI_CFG_GO_LINK_MONITOR_TIMEOUT    305
 #define WNI_CFG_ATH_DISABLE    306
+#define WNI_CFG_BTC_ACTIVE_WLAN_LEN    307
+#define WNI_CFG_BTC_ACTIVE_BT_LEN    308
+#define WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN    309
+#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN    310
 
 /*
  * String parameter lengths 
@@ -1668,8 +1672,24 @@
 #define WNI_CFG_ATH_DISABLE_STAMAX    1
 #define WNI_CFG_ATH_DISABLE_STADEF    0
 
-#define CFG_PARAM_MAX_NUM        307
-#define CFG_STA_IBUF_MAX_SIZE    241
+#define WNI_CFG_BTC_ACTIVE_WLAN_LEN_STAMIN    0
+#define WNI_CFG_BTC_ACTIVE_WLAN_LEN_STAMAX    250000
+#define WNI_CFG_BTC_ACTIVE_WLAN_LEN_STADEF    60000
+
+#define WNI_CFG_BTC_ACTIVE_BT_LEN_STAMIN    0
+#define WNI_CFG_BTC_ACTIVE_BT_LEN_STAMAX    250000
+#define WNI_CFG_BTC_ACTIVE_BT_LEN_STADEF    90000
+
+#define WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN_STAMIN    0
+#define WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN_STAMAX    250000
+#define WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN_STADEF    60000
+
+#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_STAMIN    0
+#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_STAMAX    250000
+#define WNI_CFG_BTC_SAP_ACTIVE_BT_LEN_STADEF    90000
+
+#define CFG_PARAM_MAX_NUM        311
+#define CFG_STA_IBUF_MAX_SIZE    245
 #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 0aba866..487269c 100644
--- a/CORE/MAC/src/cfg/cfgParamName.c
+++ b/CORE/MAC/src/cfg/cfgParamName.c
@@ -336,6 +336,10 @@
     (unsigned char *)"ANTENNA_DIVESITY",
     (unsigned char *)"GO_LINK_MONITOR_TIMEOUT",
     (unsigned char *)"ATH_DISABLE",
+    (unsigned char *)"BTC_ACTIVE_WLAN_LEN",
+    (unsigned char *)"BTC_ACTIVE_BT_LEN",
+    (unsigned char *)"BTC_SAP_ACTIVE_WLAN_LEN",
+    (unsigned char *)"BTC_SAP_ACTIVE_BT_LEN",
 };
 
 
diff --git a/CORE/MAC/src/cfg/cfgUtil/cfg.txt b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
index f7836e5..60d12b0 100644
--- a/CORE/MAC/src/cfg/cfgUtil/cfg.txt
+++ b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
@@ -4602,3 +4602,50 @@
 V    RW    NP
 NONE
 0   1    0
+* BTC Active WLAN Len
+*
+WNI_CFG_BTC_ACTIVE_WLAN_LEN    I    4    7
+V    RW    NP
+HAL
+0    250000    60000
+V    RW    NP
+HAL
+0    250000    60000
+*
+*
+
+* BTC Active BT Len
+*
+WNI_CFG_BTC_ACTIVE_BT_LEN    I    4    7
+V    RW    NP
+HAL
+0    250000    90000
+V    RW    NP
+HAL
+0    250000    90000
+*
+*
+
+* BTC SAP Active WLAN Len
+*
+WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN    I    4    7
+V    RW    NP
+HAL
+0    250000    60000
+V    RW    NP
+HAL
+0    250000    60000
+*
+*
+
+* BTC SAP Active BT Len
+*
+WNI_CFG_BTC_SAP_ACTIVE_BT_LEN    I    4    7
+V    RW    NP
+HAL
+0    250000    90000
+V    RW    NP
+HAL
+0    250000    90000
+*
+*
diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c
index 367bf17..cc97bad 100644
--- a/CORE/WDA/src/wlan_qct_wda.c
+++ b/CORE/WDA/src/wlan_qct_wda.c
@@ -1679,6 +1679,62 @@
    tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
                             + sizeof(tHalCfg) + tlvStruct->length) ;
 
+   /* QWLAN_HAL_CFG_BTC_STATIC_OPP_BTC_ACTIVE_WLAN_LEN  */
+   tlvStruct->type = QWLAN_HAL_CFG_BTC_STATIC_OPP_WLAN_ACTIVE_WLAN_LEN ;
+   tlvStruct->length = sizeof(tANI_U32);
+   configDataValue = (tANI_U32 *)(tlvStruct + 1);
+   if (wlan_cfgGetInt(pMac, WNI_CFG_BTC_ACTIVE_WLAN_LEN,
+                                            configDataValue ) != eSIR_SUCCESS)
+   {
+      VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+               "Failed to get value for WNI_CFG_BTC_ACTIVE_WLAN_LEN");
+      goto handle_failure;
+   }
+   tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+                            + sizeof(tHalCfg) + tlvStruct->length) ;
+
+   /* QWLAN_HAL_CFG_BTC_STATIC_OPP_BTC_ACTIVE_BT_LEN  */
+   tlvStruct->type = QWLAN_HAL_CFG_BTC_STATIC_OPP_WLAN_ACTIVE_BT_LEN ;
+   tlvStruct->length = sizeof(tANI_U32);
+   configDataValue = (tANI_U32 *)(tlvStruct + 1);
+   if (wlan_cfgGetInt(pMac, WNI_CFG_BTC_ACTIVE_BT_LEN,
+                                            configDataValue ) != eSIR_SUCCESS)
+   {
+      VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+               "Failed to get value for WNI_CFG_BTC_ACTIVE_BT_LEN");
+      goto handle_failure;
+   }
+   tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+                            + sizeof(tHalCfg) + tlvStruct->length) ;
+
+   /* QWLAN_HAL_CFG_BTC_SAP_STATIC_OPP_WLAN_ACTIVE_WLAN_LEN  */
+   tlvStruct->type = QWLAN_HAL_CFG_BTC_SAP_STATIC_OPP_WLAN_ACTIVE_WLAN_LEN ;
+   tlvStruct->length = sizeof(tANI_U32);
+   configDataValue = (tANI_U32 *)(tlvStruct + 1);
+   if (wlan_cfgGetInt(pMac,  WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN,
+                                            configDataValue ) != eSIR_SUCCESS)
+   {
+      VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+               "Failed to get value for WNI_CFG_BTC_SAP_ACTIVE_WLAN_LEN");
+      goto handle_failure;
+   }
+   tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+                            + sizeof(tHalCfg) + tlvStruct->length) ;
+
+   /* QWLAN_HAL_CFG_BTC_SAP_STATIC_OPP_BTC_ACTIVE_BT_LEN  */
+   tlvStruct->type = QWLAN_HAL_CFG_BTC_SAP_STATIC_OPP_WLAN_ACTIVE_BT_LEN ;
+   tlvStruct->length = sizeof(tANI_U32);
+   configDataValue = (tANI_U32 *)(tlvStruct + 1);
+   if (wlan_cfgGetInt(pMac, WNI_CFG_BTC_SAP_ACTIVE_BT_LEN,
+                                            configDataValue ) != eSIR_SUCCESS)
+   {
+      VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+               "Failed to get value for WNI_CFG_BTC_SAP_ACTIVE_BT_LEN");
+      goto handle_failure;
+   }
+   tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
+                           + sizeof(tHalCfg) + tlvStruct->length) ;
+
    wdiStartParams->usConfigBufferLen = (tANI_U8 *)tlvStruct - tlvStructStart ;
 #ifdef WLAN_DEBUG
    {
diff --git a/firmware_bin/WCNSS_cfg.dat b/firmware_bin/WCNSS_cfg.dat
index 14c7780..3e5fac3 100644
--- a/firmware_bin/WCNSS_cfg.dat
+++ b/firmware_bin/WCNSS_cfg.dat
Binary files differ