Add ini param for sending CTS2S during BTC SCO

This Commit adds support for user configurable param to use
CTS2SELF during BTC SCO

Change-Id: I821d6b00e6c77d551fefcba2f9965f867b942f20
CRs-fixed: 591530
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index 9b683e8..195542a 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -2026,6 +2026,16 @@
 #define CFG_ASD_RTT_RSSI_HYST_THRESHOLD_MIN              (0)
 #define CFG_ASD_RTT_RSSI_HYST_THRESHOLD_MAX              (100)
 
+//Enable debug for remain on channel issues
+#define CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_NAME    "gDebugP2pRemainOnChannel"
+#define CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_DEFAULT ( 0 )
+#define CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MIN     ( 0 )
+#define CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MAX     ( 1 )
+
+#define CFG_CTS2S_DURING_BTC_SCO_NAME           "btcCTS2SduringSCO"
+#define CFG_CTS2S_DURING_BTC_SCO_DEFAULT        WNI_CFG_BTC_CTS2S_DURING_SCO_STADEF
+#define CFG_CTS2S_DURING_BTC_SCO_MIN            WNI_CFG_BTC_CTS2S_DURING_SCO_STAMIN
+#define CFG_CTS2S_DURING_BTC_SCO_MAX            WNI_CFG_BTC_CTS2S_DURING_SCO_STAMAX
 /*--------------------------------------------------------------------------- 
   Type declarations
   -------------------------------------------------------------------------*/ 
@@ -2447,6 +2457,8 @@
    v_U32_t                     gAsdProbeInterval;
    v_U32_t                     gAsdTriggerThreshold;
    v_U32_t                     gAsdRTTRssiHystThreshold;
+   v_BOOL_t                    debugP2pRemainOnChannel;
+   v_U32_t                     cfgBtcCTS2SduringSCO;
 } 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 c93d55c..b24435a 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -2884,6 +2884,20 @@
                  CFG_ASD_RTT_RSSI_HYST_THRESHOLD_DEFAULT,
                  CFG_ASD_RTT_RSSI_HYST_THRESHOLD_MIN,
                  CFG_ASD_RTT_RSSI_HYST_THRESHOLD_MAX),
+
+   REG_VARIABLE( CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_NAME, WLAN_PARAM_Integer,
+                 hdd_config_t, debugP2pRemainOnChannel,
+                 VAR_FLAGS_OPTIONAL,
+                 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_DEFAULT,
+                 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MIN,
+                 CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_MAX ),
+
+   REG_VARIABLE(CFG_CTS2S_DURING_BTC_SCO_NAME, WLAN_PARAM_Integer,
+                hdd_config_t, cfgBtcCTS2SduringSCO,
+                VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+                CFG_CTS2S_DURING_BTC_SCO_DEFAULT,
+                CFG_CTS2S_DURING_BTC_SCO_MIN,
+                CFG_CTS2S_DURING_BTC_SCO_MAX ),
 };
 
 
@@ -4540,6 +4554,25 @@
       fStatus = FALSE;
       hddLog(LOGE, "Could not pass on WNI_CFG_ASD_RSSI_HYST_THRESHOLD to CCM");
    }
+
+   if (ccmCfgSetInt(pHddCtx->hHal,
+                    WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL,
+                    pConfig->debugP2pRemainOnChannel,
+                    NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
+   {
+       fStatus = FALSE;
+       hddLog(LOGE,
+              "Could not pass on WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL to CCM");
+   }
+
+   if (ccmCfgSetInt(pHddCtx->hHal,
+                    WNI_CFG_BTC_CTS2S_DURING_SCO,
+                    pConfig->cfgBtcCTS2SduringSCO,
+                    NULL, eANI_BOOLEAN_FALSE) == eHAL_STATUS_FAILURE)
+   {
+       fStatus = FALSE;
+       hddLog(LOGE, "Could not pass on WNI_CFG_BTC_CTS2S_DURING_SCO to CCM");
+   }
    return fStatus;
 }
 
diff --git a/CORE/MAC/inc/wniCfgAp.h b/CORE/MAC/inc/wniCfgAp.h
index ac6b2e3..90e9931 100644
--- a/CORE/MAC/inc/wniCfgAp.h
+++ b/CORE/MAC/inc/wniCfgAp.h
@@ -373,6 +373,8 @@
 #define WNI_CFG_ASD_PROBE_INTERVAL    312
 #define WNI_CFG_ASD_TRIGGER_THRESHOLD    313
 #define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD    314
+#define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL    315
+#define WNI_CFG_BTC_CTS2S_DURING_SCO    316
 
 /*
  * String parameter lengths 
@@ -2644,10 +2646,26 @@
 #define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_APMAX    100
 #define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_APDEF    0
 
-#define CFG_PARAM_MAX_NUM         315
-#define CFG_AP_IBUF_MAX_SIZE      254
+#define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_STAMIN    0
+#define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_STAMAX    1
+#define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_STADEF    0
+
+#define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_APMIN    0
+#define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_APMAX    1
+#define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_APDEF    0
+
+#define WNI_CFG_BTC_CTS2S_DURING_SCO_STAMIN    0
+#define WNI_CFG_BTC_CTS2S_DURING_SCO_STAMAX    1
+#define WNI_CFG_BTC_CTS2S_DURING_SCO_STADEF    0
+
+#define WNI_CFG_BTC_CTS2S_DURING_SCO_APMIN    0
+#define WNI_CFG_BTC_CTS2S_DURING_SCO_APMAX    1
+#define WNI_CFG_BTC_CTS2S_DURING_SCO_APDEF    0
+
+#define CFG_PARAM_MAX_NUM         317
+#define CFG_AP_IBUF_MAX_SIZE      256
 #define CFG_AP_SBUF_MAX_SIZE      3422
-#define CFG_STA_IBUF_MAX_SIZE     249
+#define CFG_STA_IBUF_MAX_SIZE     251
 #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 d49c69c..8195f45 100644
--- a/CORE/MAC/inc/wniCfgSta.h
+++ b/CORE/MAC/inc/wniCfgSta.h
@@ -367,6 +367,8 @@
 #define WNI_CFG_ASD_PROBE_INTERVAL    312
 #define WNI_CFG_ASD_TRIGGER_THRESHOLD    313
 #define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD    314
+#define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL    315
+#define WNI_CFG_BTC_CTS2S_DURING_SCO    316
 
 /*
  * String parameter lengths 
@@ -1709,8 +1711,16 @@
 #define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_STAMAX    100
 #define WNI_CFG_ASD_RTT_RSSI_HYST_THRESHOLD_STADEF    0
 
-#define CFG_PARAM_MAX_NUM        315
-#define CFG_STA_IBUF_MAX_SIZE    249
+#define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_STAMIN    0
+#define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_STAMAX    1
+#define WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL_STADEF    0
+
+#define WNI_CFG_BTC_CTS2S_DURING_SCO_STAMIN    0
+#define WNI_CFG_BTC_CTS2S_DURING_SCO_STAMAX    1
+#define WNI_CFG_BTC_CTS2S_DURING_SCO_STADEF    0
+
+#define CFG_PARAM_MAX_NUM        317
+#define CFG_STA_IBUF_MAX_SIZE    251
 #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 41310b0..9560b32 100644
--- a/CORE/MAC/src/cfg/cfgParamName.c
+++ b/CORE/MAC/src/cfg/cfgParamName.c
@@ -331,7 +331,6 @@
     (unsigned char *)"TDLS_PUAPSD_INACT_TIME",
     (unsigned char *)"TDLS_RX_FRAME_THRESHOLD",
     (unsigned char *)"ENABLE_ADAPT_RX_DRAIN",
-    (unsigned char *)"OXYGEN_NETWORK_DATA",
     (unsigned char *)"FLEX_CONNECT_POWER_FACTOR",
     (unsigned char *)"ANTENNA_DIVESITY",
     (unsigned char *)"GO_LINK_MONITOR_TIMEOUT",
@@ -344,6 +343,8 @@
     (unsigned char *)"ASD_PROBE_INTERVAL",
     (unsigned char *)"ASD_TRIGGER_THRESHOLD",
     (unsigned char *)"ASD_RTT_RSSI_HYST_THRESHOLD",
+    (unsigned char *)"DEBUG_P2P_REMAIN_ON_CHANNEL",
+    (unsigned char *)"BTC_CTS2S_DURING_SCO",
 };
 
 
diff --git a/CORE/MAC/src/cfg/cfgUtil/cfg.txt b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
index e0a2cfe..89649f2 100644
--- a/CORE/MAC/src/cfg/cfgUtil/cfg.txt
+++ b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
@@ -4697,3 +4697,25 @@
 0    100    0
 *
 *
+
+* Debug p2p remain on channel
+*
+WNI_CFG_DEBUG_P2P_REMAIN_ON_CHANNEL    I    4    7
+V    RW    NP
+NONE
+0    1    0
+V    RW    NP
+NONE
+0    1    0
+
+* BTC CTS2S during SCO
+*
+WNI_CFG_BTC_CTS2S_DURING_SCO    I    4    7
+V    RW    NP
+HAL
+0    1     0
+V    RW    NP
+HAL
+0    1     0
+*
+*
diff --git a/CORE/WDA/src/wlan_qct_wda.c b/CORE/WDA/src/wlan_qct_wda.c
index 3f98c85..7a8c6e3 100644
--- a/CORE/WDA/src/wlan_qct_wda.c
+++ b/CORE/WDA/src/wlan_qct_wda.c
@@ -1777,6 +1777,20 @@
    tlvStruct = (tHalCfg *)( (tANI_U8 *) tlvStruct
                             + sizeof(tHalCfg) + tlvStruct->length) ;
 
+   /* QWLAN_HAL_CFG_BTC_CTS2S_ON_STA_DURING_SCO  */
+   tlvStruct->type = QWLAN_HAL_CFG_BTC_CTS2S_ON_STA_DURING_SCO ;
+   tlvStruct->length = sizeof(tANI_U32);
+   configDataValue = (tANI_U32 *)(tlvStruct + 1);
+   if (wlan_cfgGetInt(pMac, WNI_CFG_BTC_CTS2S_DURING_SCO,
+                                            configDataValue ) != eSIR_SUCCESS)
+   {
+      VOS_TRACE( VOS_MODULE_ID_WDA, VOS_TRACE_LEVEL_ERROR,
+               "Failed to get value for WNI_CFG_BTC_CTS2S_DURING_SCO");
+      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 3a714de..54595c5 100644
--- a/firmware_bin/WCNSS_cfg.dat
+++ b/firmware_bin/WCNSS_cfg.dat
Binary files differ