diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index ef76fce5e850..c9ab6c29bfd6 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/core/hdd/inc/wlan_hdd_cfg.h
@@ -11426,6 +11426,54 @@ enum hdd_wext_control {
#define CFG_HE_STA_OBSSPD_DEFAULT (0x15b8c2ae)
#endif /* WLAN_FEATURE_11AX */
+#ifdef WLAN_FEATURE_TWT
+/*
+ *
+ * enable_twt - Enable Target Wake Time support.
+ * @Min: 0
+ * @Max: 1
+ * @Default: 1
+ *
+ * This ini is used to enable or disable TWT support.
+ *
+ * Related: NA
+ *
+ * Supported Feature: 11AX
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_ENABLE_TWT_NAME "enable_twt"
+#define CFG_ENABLE_TWT_MIN (0)
+#define CFG_ENABLE_TWT_MAX (1)
+#define CFG_ENABLE_TWT_DEFAULT (1)
+
+/*
+ *
+ * twt_congestion_timeout - Target wake time congestion timeout.
+ * @Min: 10
+ * @Max: 10000
+ * @Default: 100
+ *
+ * STA uses this timer to continuously monitor channel congestion levels to
+ * decide whether to start or stop TWT. This ini is used to configure the
+ * target wake time congestion timeout value in the units of milliseconds.
+ *
+ * Related: NA
+ *
+ * Supported Feature: 11AX
+ *
+ * Usage: External
+ *
+ *
+ */
+#define CFG_TWT_CONGESTION_TIMEOUT_NAME "twt_congestion_timeout"
+#define CFG_TWT_CONGESTION_TIMEOUT_MIN (10)
+#define CFG_TWT_CONGESTION_TIMEOUT_MAX (10000)
+#define CFG_TWT_CONGESTION_TIMEOUT_DEFAULT (100)
+
+#endif /* WLAN_FEATURE_TWT */
/*
*
@@ -14964,6 +15012,10 @@ struct hdd_config {
bool enable_ul_mimo;
bool enable_ul_ofdma;
uint32_t he_sta_obsspd;
+#endif
+#ifdef WLAN_FEATURE_TWT
+ bool enable_twt;
+ uint32_t twt_congestion_timeout;
#endif
uint32_t arp_ac_category;
bool ani_enabled;
diff --git a/core/hdd/inc/wlan_hdd_twt.h b/core/hdd/inc/wlan_hdd_twt.h
new file mode 100644
index 000000000000..3d20c1d51cf5
--- /dev/null
+++ b/core/hdd/inc/wlan_hdd_twt.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2018 The Linux Foundation. All rights reserved.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC : wlan_hdd_twt.h
+ *
+ * WLAN Host Device Driver file for TWT (Target Wake Time) support.
+ *
+ */
+
+#if !defined(WLAN_HDD_TWT_H)
+#define WLAN_HDD_TWT_H
+
+struct hdd_context;
+
+#ifdef WLAN_FEATURE_TWT
+/**
+ * hdd_twt_print_ini_config() - Print TWT INI config items
+ * @hdd_ctx: HDD Context
+ *
+ * Return: None
+ */
+void hdd_twt_print_ini_config(struct hdd_context *hdd_ctx);
+
+#else
+static inline void hdd_twt_print_ini_config(struct hdd_context *hdd_ctx)
+{
+}
+
+#endif
+#endif /* if !defined(WLAN_HDD_TWT_H)*/
diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c
index 9fdc19e7aa30..a37c8ab31294 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/core/hdd/src/wlan_hdd_cfg.c
@@ -41,6 +41,7 @@
#include "wifi_pos_api.h"
#include "wlan_hdd_green_ap.h"
#include "wlan_hdd_green_ap_cfg.h"
+#include "wlan_hdd_twt.h"
static void
cb_notify_set_roam_prefer5_g_hz(struct hdd_context *hdd_ctx, unsigned long notifyId)
@@ -4453,6 +4454,21 @@ struct reg_table_entry g_registry_table[] = {
CFG_HE_STA_OBSSPD_MIN,
CFG_HE_STA_OBSSPD_MAX),
#endif
+#ifdef WLAN_FEATURE_TWT
+ REG_VARIABLE(CFG_ENABLE_TWT_NAME, WLAN_PARAM_Integer,
+ struct hdd_config, enable_twt,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_ENABLE_TWT_DEFAULT,
+ CFG_ENABLE_TWT_MIN,
+ CFG_ENABLE_TWT_MAX),
+
+ REG_VARIABLE(CFG_TWT_CONGESTION_TIMEOUT_NAME, WLAN_PARAM_Integer,
+ struct hdd_config, twt_congestion_timeout,
+ VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
+ CFG_TWT_CONGESTION_TIMEOUT_DEFAULT,
+ CFG_TWT_CONGESTION_TIMEOUT_MIN,
+ CFG_TWT_CONGESTION_TIMEOUT_MAX),
+#endif
REG_VARIABLE(CFG_ARP_AC_CATEGORY, WLAN_PARAM_Integer,
struct hdd_config, arp_ac_category,
@@ -7110,6 +7126,7 @@ void hdd_cfg_print(struct hdd_context *hdd_ctx)
hdd_per_roam_print_ini_config(hdd_ctx);
hdd_he_print_ini_config(hdd_ctx);
+ hdd_twt_print_ini_config(hdd_ctx);
hdd_debug("Name = [%s] Value = [%d]",
CFG_ARP_AC_CATEGORY,
hdd_ctx->config->arp_ac_category);
diff --git a/core/hdd/src/wlan_hdd_twt.c b/core/hdd/src/wlan_hdd_twt.c
new file mode 100644
index 000000000000..93665a6e8b39
--- /dev/null
+++ b/core/hdd/src/wlan_hdd_twt.c
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2018 The Linux Foundation. All rights reserved.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC : wlan_hdd_twt.c
+ *
+ * WLAN Host Device Driver file for TWT (Target Wake Time) support.
+ *
+ */
+
+#include "wlan_hdd_twt.h"
+#include "wlan_hdd_main.h"
+#include "wlan_hdd_cfg.h"
+
+void hdd_twt_print_ini_config(struct hdd_context *hdd_ctx)
+{
+ hdd_debug("Name = [%s] Value = [%d]", CFG_ENABLE_TWT_NAME,
+ hdd_ctx->config->enable_twt);
+ hdd_debug("Name = [%s] Value = [%d]", CFG_TWT_CONGESTION_TIMEOUT_NAME,
+ hdd_ctx->config->twt_congestion_timeout);
+}
+