TDLS: Introduce optional TDLS Off Channel capability parameter.

This commit provides an option to configure tdls offchannel
capability through ini parameter, gEnableTDLSOffChannel and also
propogates this to the firmware and LIM layer.

Change-Id: Ia19d74c5defa789e053a4240392c87cc4da5bf65
CRs-Fixed: 610536
diff --git a/CORE/MAC/inc/aniGlobal.h b/CORE/MAC/inc/aniGlobal.h
index 6e5140d..38375a1 100644
--- a/CORE/MAC/inc/aniGlobal.h
+++ b/CORE/MAC/inc/aniGlobal.h
@@ -671,6 +671,7 @@
 #ifdef FEATURE_WLAN_TDLS
     tANI_U8 gLimTDLSBufStaEnabled;
     tANI_U8 gLimTDLSUapsdMask;
+    tANI_U8 gLimTDLSOffChannelEnabled;
 #endif
 
 
diff --git a/CORE/MAC/inc/wniCfgAp.h b/CORE/MAC/inc/wniCfgAp.h
index b21d8c3..7c8557e 100644
--- a/CORE/MAC/inc/wniCfgAp.h
+++ b/CORE/MAC/inc/wniCfgAp.h
@@ -383,6 +383,7 @@
 #define WNI_CFG_OBSS_HT40_SCAN_ACTIVE_TOTAL_PER_CHANNEL    322
 #define WNI_CFG_OBSS_HT40_WIDTH_CHANNEL_TRANSITION_DELAY_FACTOR    323
 #define WNI_CFG_OBSS_HT40_SCAN_ACTIVITY_THRESHOLD    324
+#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED    325
 
 /*
  * String parameter lengths 
@@ -2734,10 +2735,18 @@
 #define WNI_CFG_OBSS_HT40_SCAN_ACTIVITY_THRESHOLD_APMAX    100
 #define WNI_CFG_OBSS_HT40_SCAN_ACTIVITY_THRESHOLD_APDEF    25
 
-#define CFG_PARAM_MAX_NUM         325
-#define CFG_AP_IBUF_MAX_SIZE      264
+#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STAMIN    0
+#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STAMAX    1
+#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STADEF    0
+
+#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_APMIN    0
+#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_APMAX    1
+#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_APDEF    0
+
+#define CFG_PARAM_MAX_NUM         326
+#define CFG_AP_IBUF_MAX_SIZE      265
 #define CFG_AP_SBUF_MAX_SIZE      3422
-#define CFG_STA_IBUF_MAX_SIZE     259
+#define CFG_STA_IBUF_MAX_SIZE     260
 #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 25b9e26..3f81407 100644
--- a/CORE/MAC/inc/wniCfgSta.h
+++ b/CORE/MAC/inc/wniCfgSta.h
@@ -377,6 +377,7 @@
 #define WNI_CFG_OBSS_HT40_SCAN_ACTIVE_TOTAL_PER_CHANNEL    322
 #define WNI_CFG_OBSS_HT40_WIDTH_CHANNEL_TRANSITION_DELAY_FACTOR    323
 #define WNI_CFG_OBSS_HT40_SCAN_ACTIVITY_THRESHOLD    324
+#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED    325
 
 /*
  * String parameter lengths 
@@ -1759,8 +1760,12 @@
 #define WNI_CFG_OBSS_HT40_SCAN_ACTIVITY_THRESHOLD_STAMAX    100
 #define WNI_CFG_OBSS_HT40_SCAN_ACTIVITY_THRESHOLD_STADEF    25
 
-#define CFG_PARAM_MAX_NUM        325
-#define CFG_STA_IBUF_MAX_SIZE    259
+#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STAMIN    0
+#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STAMAX    1
+#define WNI_CFG_TDLS_OFF_CHANNEL_ENABLED_STADEF    0
+
+#define CFG_PARAM_MAX_NUM        326
+#define CFG_STA_IBUF_MAX_SIZE    260
 #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 d75a1e8..aec017a 100644
--- a/CORE/MAC/src/cfg/cfgParamName.c
+++ b/CORE/MAC/src/cfg/cfgParamName.c
@@ -353,6 +353,7 @@
     (unsigned char *)"OBSS_HT40_SCAN_ACTIVE_TOTAL_PER_CHANNEL",
     (unsigned char *)"OBSS_HT40_WIDTH_CHANNEL_TRANSITION_DELAY_FACTOR",
     (unsigned char *)"OBSS_HT40_SCAN_ACTIVITY_THRESHOLD",
+    (unsigned char *)"TDLS_OFF_CHANNEL_ENABLED",
 };
 
 
diff --git a/CORE/MAC/src/cfg/cfgUtil/cfg.txt b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
index 883228c..095d07c 100644
--- a/CORE/MAC/src/cfg/cfgUtil/cfg.txt
+++ b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
@@ -4815,3 +4815,14 @@
 V    RW    NP
 NONE
 0    100    25
+
+*
+* TDLS Off Channel Implementation
+*
+WNI_CFG_TDLS_OFF_CHANNEL_ENABLED I 4 7
+V    RW    NP
+LIM
+0    1     0
+V    RW    NP
+LIM
+0    1     0
diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c
index c9106f9..da397e1 100644
--- a/CORE/MAC/src/pe/lim/limApi.c
+++ b/CORE/MAC/src/pe/lim/limApi.c
@@ -640,6 +640,11 @@
        limLog(pMac, LOGP, FL("cfg get LimTDLSUapsdMask failed"));
        return eSIR_FAILURE;
    }
+   if(wlan_cfgGetInt(pMac, WNI_CFG_TDLS_OFF_CHANNEL_ENABLED,(tANI_U32 *) &pMac->lim.gLimTDLSOffChannelEnabled) != eSIR_SUCCESS)
+   {
+       limLog(pMac, LOGP, FL("cfg get LimTDLSUapsdMask failed"));
+       return eSIR_FAILURE;
+   }
 #endif
    return eSIR_SUCCESS;
 }