Configure TDLS implicit trigger parameters from ini file.

Change-Id: I8e316b4ea660a28792ab18796a0cea2473d7624c

668335: Configure TDLS implicit trigger parameters from ini file.
diff --git a/CORE/HDD/inc/wlan_hdd_cfg.h b/CORE/HDD/inc/wlan_hdd_cfg.h
index ea06076..09ad130 100644
--- a/CORE/HDD/inc/wlan_hdd_cfg.h
+++ b/CORE/HDD/inc/wlan_hdd_cfg.h
@@ -1469,10 +1469,45 @@
 #endif
 
 #ifdef FEATURE_WLAN_TDLS
-#define CFG_TDLS_SUPPORT_ENABLE               "gEnableTDLSSupport"
-#define CFG_TDLS_SUPPORT_ENABLE_MIN           ( 0 )
-#define CFG_TDLS_SUPPORT_ENABLE_MAX           ( 1 )
-#define CFG_TDLS_SUPPORT_ENABLE_DEFAULT       ( 0 )
+#define CFG_TDLS_SUPPORT_ENABLE                     "gEnableTDLSSupport"
+#define CFG_TDLS_SUPPORT_ENABLE_MIN                 ( 0 )
+#define CFG_TDLS_SUPPORT_ENABLE_MAX                 ( 1 )
+#define CFG_TDLS_SUPPORT_ENABLE_DEFAULT             ( 0 )
+
+#define CFG_TDLS_IMPLICIT_TRIGGER                   "gEnableTDLSImplicitTrigger"
+#define CFG_TDLS_IMPLICIT_TRIGGER_MIN               ( 0 )
+#define CFG_TDLS_IMPLICIT_TRIGGER_MAX               ( 1 )
+#define CFG_TDLS_IMPLICIT_TRIGGER_DEFAULT           ( 0 )
+
+#define CFG_TDLS_TX_STATS_PERIOD                    "gTDLSTxStatsPeriod"
+#define CFG_TDLS_TX_STATS_PERIOD_MIN                ( 0 )
+#define CFG_TDLS_TX_STATS_PERIOD_MAX                ( 4294967295UL )
+#define CFG_TDLS_TX_STATS_PERIOD_DEFAULT            ( 2000 )
+
+#define CFG_TDLS_TX_PACKET_THRESHOLD                "gTDLSTxPacketThreshold"
+#define CFG_TDLS_TX_PACKET_THRESHOLD_MIN            ( 0 )
+#define CFG_TDLS_TX_PACKET_THRESHOLD_MAX            ( 4294967295UL )
+#define CFG_TDLS_TX_PACKET_THRESHOLD_DEFAULT        ( 1000 )
+
+#define CFG_TDLS_DISCOVERY_PERIOD                   "gTDLSDiscoveryPeriod"
+#define CFG_TDLS_DISCOVERY_PERIOD_MIN               ( 0 )
+#define CFG_TDLS_DISCOVERY_PERIOD_MAX               ( 4294967295UL )
+#define CFG_TDLS_DISCOVERY_PERIOD_DEFAULT           ( 60000 )
+
+#define CFG_TDLS_MAX_DISCOVERY_ATTEMPT              "gTDLSMaxDiscoveryAttempt"
+#define CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MIN          ( 0 )
+#define CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MAX          ( 100 )
+#define CFG_TDLS_MAX_DISCOVERY_ATTEMPT_DEFAULT      ( 2 )
+
+#define CFG_TDLS_RX_IDLE_TIMEOUT                    "gTDLSRxIdleTimeout"
+#define CFG_TDLS_RX_IDLE_TIMEOUT_MIN                ( 0 )
+#define CFG_TDLS_RX_IDLE_TIMEOUT_MAX                ( 40000 )
+#define CFG_TDLS_RX_IDLE_TIMEOUT_DEFAULT            ( 5000 )
+
+#define CFG_TDLS_RSSI_HYSTERESIS                    "gTDLSRssiHysteresis"
+#define CFG_TDLS_RSSI_HYSTERESIS_MIN                ( 0 )
+#define CFG_TDLS_RSSI_HYSTERESIS_MAX                ( 100 )
+#define CFG_TDLS_RSSI_HYSTERESIS_DEFAULT            ( 100 )
 #endif
 
 /* Enable/Disable LPWR Image(cMEM uBSP) Transition */
@@ -1832,6 +1867,13 @@
    v_BOOL_t                    enableRxSTBC;
 #ifdef FEATURE_WLAN_TDLS       
    v_BOOL_t                    fEnableTDLSSupport;
+   v_BOOL_t                    fEnableTDLSImplicitTrigger;
+   v_U32_t                     fTDLSTxStatsPeriod;
+   v_U32_t                     fTDLSTxPacketThreshold;
+   v_U32_t                     fTDLSDiscoveryPeriod;
+   v_U32_t                     fTDLSMaxDiscoveryAttempt;
+   v_U32_t                     fTDLSRxIdleTimeout;
+   v_U32_t                     fTDLSRssiHysteresis;
 #endif
    v_U32_t                     enableLpwrImgTransition;
 #ifdef WLAN_SOFTAP_VSTA_FEATURE
diff --git a/CORE/HDD/src/wlan_hdd_cfg.c b/CORE/HDD/src/wlan_hdd_cfg.c
index e849145..3febddd 100644
--- a/CORE/HDD/src/wlan_hdd_cfg.c
+++ b/CORE/HDD/src/wlan_hdd_cfg.c
@@ -1791,6 +1791,55 @@
               CFG_TDLS_SUPPORT_ENABLE_DEFAULT,
               CFG_TDLS_SUPPORT_ENABLE_MIN,
               CFG_TDLS_SUPPORT_ENABLE_MAX ),
+
+REG_VARIABLE( CFG_TDLS_IMPLICIT_TRIGGER, WLAN_PARAM_Integer,
+              hdd_config_t, fEnableTDLSImplicitTrigger,
+              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+              CFG_TDLS_IMPLICIT_TRIGGER_DEFAULT,
+              CFG_TDLS_IMPLICIT_TRIGGER_MIN,
+              CFG_TDLS_IMPLICIT_TRIGGER_MAX ),
+
+REG_VARIABLE( CFG_TDLS_TX_STATS_PERIOD, WLAN_PARAM_Integer,
+              hdd_config_t, fTDLSTxStatsPeriod,
+              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+              CFG_TDLS_TX_STATS_PERIOD_DEFAULT,
+              CFG_TDLS_TX_STATS_PERIOD_MIN,
+              CFG_TDLS_TX_STATS_PERIOD_MAX ),
+
+REG_VARIABLE( CFG_TDLS_TX_PACKET_THRESHOLD, WLAN_PARAM_Integer,
+              hdd_config_t, fTDLSTxPacketThreshold,
+              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+              CFG_TDLS_TX_PACKET_THRESHOLD_DEFAULT,
+              CFG_TDLS_TX_PACKET_THRESHOLD_MIN,
+              CFG_TDLS_TX_PACKET_THRESHOLD_MAX ),
+
+REG_VARIABLE( CFG_TDLS_DISCOVERY_PERIOD, WLAN_PARAM_Integer,
+              hdd_config_t, fTDLSDiscoveryPeriod,
+              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+              CFG_TDLS_DISCOVERY_PERIOD_DEFAULT,
+              CFG_TDLS_DISCOVERY_PERIOD_MIN,
+              CFG_TDLS_DISCOVERY_PERIOD_MAX ),
+
+REG_VARIABLE( CFG_TDLS_MAX_DISCOVERY_ATTEMPT, WLAN_PARAM_Integer,
+              hdd_config_t, fTDLSMaxDiscoveryAttempt,
+              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+              CFG_TDLS_MAX_DISCOVERY_ATTEMPT_DEFAULT,
+              CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MIN,
+              CFG_TDLS_MAX_DISCOVERY_ATTEMPT_MAX ),
+
+REG_VARIABLE( CFG_TDLS_RX_IDLE_TIMEOUT, WLAN_PARAM_Integer,
+              hdd_config_t, fTDLSRxIdleTimeout,
+              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+              CFG_TDLS_RX_IDLE_TIMEOUT_DEFAULT,
+              CFG_TDLS_RX_IDLE_TIMEOUT_MIN,
+              CFG_TDLS_RX_IDLE_TIMEOUT_MAX ),
+
+REG_VARIABLE( CFG_TDLS_RSSI_HYSTERESIS, WLAN_PARAM_Integer,
+              hdd_config_t, fTDLSRssiHysteresis,
+              VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+              CFG_TDLS_RSSI_HYSTERESIS_DEFAULT,
+              CFG_TDLS_RSSI_HYSTERESIS_MIN,
+              CFG_TDLS_RSSI_HYSTERESIS_MAX ),
 #endif
 
 #ifdef WLAN_SOFTAP_VSTA_FEATURE
diff --git a/CORE/HDD/src/wlan_hdd_tdls.c b/CORE/HDD/src/wlan_hdd_tdls.c
index 3cea10b..357ea1f 100644
--- a/CORE/HDD/src/wlan_hdd_tdls.c
+++ b/CORE/HDD/src/wlan_hdd_tdls.c
@@ -187,8 +187,16 @@
 int wlan_hdd_tdls_init(struct net_device *dev)
 {
     VOS_STATUS status;
-    pHddTdlsCtx = vos_mem_malloc(sizeof(tdlsCtx_t));
+    hdd_adapter_t *pAdapter = WLAN_HDD_GET_PRIV_PTR(dev);
+    hdd_context_t *pHddCtx = WLAN_HDD_GET_CTX( pAdapter );
 
+    if(FALSE == pHddCtx->cfg_ini->fEnableTDLSSupport)
+    {
+        hddLog(VOS_TRACE_LEVEL_ERROR, "%s TDLS not enabled!", __func__);
+        return -1;
+    }
+
+    pHddTdlsCtx = vos_mem_malloc(sizeof(tdlsCtx_t));
     if (NULL == pHddTdlsCtx) {
         hddLog(VOS_TRACE_LEVEL_ERROR, "%s malloc failed!", __func__);
         return -1;
@@ -198,12 +206,17 @@
 
     pHddTdlsCtx->dev = dev;
 
-    pHddTdlsCtx->threshold_config.tx_period_t = TDLS_TX_STATS_PERIOD;
-    pHddTdlsCtx->threshold_config.tx_packet_n = TDLS_IMPLICIT_TRIGGER_PKT_THRESHOLD;
-    pHddTdlsCtx->threshold_config.discovery_period_t = TDLS_DISCOVERY_PERIOD;
-    pHddTdlsCtx->threshold_config.discovery_tries_n = TDLS_MAX_DISCOVER_ATTEMPT;
-    pHddTdlsCtx->threshold_config.rx_timeout_t = TDLS_RX_IDLE_TIMEOUT;
-    pHddTdlsCtx->threshold_config.rssi_hysteresis = TDLS_RSSI_TRIGGER_HYSTERESIS;
+    if(FALSE == pHddCtx->cfg_ini->fEnableTDLSImplicitTrigger)
+    {
+        hddLog(VOS_TRACE_LEVEL_ERROR, "%s TDLS Implicit trigger not enabled!", __func__);
+        return -1;
+    }
+    pHddTdlsCtx->threshold_config.tx_period_t = pHddCtx->cfg_ini->fTDLSTxStatsPeriod;
+    pHddTdlsCtx->threshold_config.tx_packet_n = pHddCtx->cfg_ini->fTDLSTxPacketThreshold;
+    pHddTdlsCtx->threshold_config.discovery_period_t = pHddCtx->cfg_ini->fTDLSDiscoveryPeriod;
+    pHddTdlsCtx->threshold_config.discovery_tries_n = pHddCtx->cfg_ini->fTDLSMaxDiscoveryAttempt;
+    pHddTdlsCtx->threshold_config.rx_timeout_t = pHddCtx->cfg_ini->fTDLSRxIdleTimeout;
+    pHddTdlsCtx->threshold_config.rssi_hysteresis = pHddCtx->cfg_ini->fTDLSRssiHysteresis;
 
     status = vos_timer_init(&pHddTdlsCtx->peerDiscoverTimer,
                      VOS_TIMER_TYPE_SW,