TDLS : Host Changes supporting PUAPSD implementation.

This commit has the host changes to support the PUAPSD
implementation in the firmware.

Change-Id: I60a33f8067ea316d5179374cf6ec41400ceabbf2
CRs-fixed: 488980
diff --git a/CORE/MAC/src/cfg/cfgParamName.c b/CORE/MAC/src/cfg/cfgParamName.c
index c0db1a0..e75f729 100644
--- a/CORE/MAC/src/cfg/cfgParamName.c
+++ b/CORE/MAC/src/cfg/cfgParamName.c
@@ -1,50 +1,25 @@
 /*
- * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
+  * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
+  *
+  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+  *
+  *
+  * 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.
+*/
 /*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
-/*
- * Copyright (C) 2007-2009 QUALCOMM Incorporated. All rights reserved. Proprietary and Confidential.
- */
-
-/*
- * DO NOT EDIT - This file is generated automatically
+ * DO NOT EDIT - This file is generated automaticlly
  */
 
 /*
@@ -53,303 +28,308 @@
 #include "cfgPriv.h"
 
 unsigned char *gCfgParamName[] = {
-    (unsigned char *)"STA_ID",
-    (unsigned char *)"CF_POLLABLE",
-    (unsigned char *)"CFP_PERIOD",
-    (unsigned char *)"CFP_MAX_DURATION",
-    (unsigned char *)"SSID",
-    (unsigned char *)"BEACON_INTERVAL",
-    (unsigned char *)"DTIM_PERIOD",
-    (unsigned char *)"WEP_KEY_LENGTH",
-    (unsigned char *)"WEP_DEFAULT_KEY_1",
-    (unsigned char *)"WEP_DEFAULT_KEY_2",
-    (unsigned char *)"WEP_DEFAULT_KEY_3",
-    (unsigned char *)"WEP_DEFAULT_KEY_4",
-    (unsigned char *)"WEP_DEFAULT_KEYID",
-    (unsigned char *)"EXCLUDE_UNENCRYPTED",
-    (unsigned char *)"RTS_THRESHOLD",
-    (unsigned char *)"SHORT_RETRY_LIMIT",
-    (unsigned char *)"LONG_RETRY_LIMIT",
-    (unsigned char *)"FRAGMENTATION_THRESHOLD",
-    (unsigned char *)"ACTIVE_MINIMUM_CHANNEL_TIME",
-    (unsigned char *)"ACTIVE_MAXIMUM_CHANNEL_TIME",
-    (unsigned char *)"PASSIVE_MINIMUM_CHANNEL_TIME",
-    (unsigned char *)"PASSIVE_MAXIMUM_CHANNEL_TIME",
-    (unsigned char *)"JOIN_FAILURE_TIMEOUT",
-    (unsigned char *)"AUTHENTICATE_FAILURE_TIMEOUT",
-    (unsigned char *)"AUTHENTICATE_RSP_TIMEOUT",
-    (unsigned char *)"ASSOCIATION_FAILURE_TIMEOUT",
-    (unsigned char *)"REASSOCIATION_FAILURE_TIMEOUT",
-    (unsigned char *)"RA_PERIODICITY_TIMEOUT_IN_PS",
-    (unsigned char *)"PS_ENABLE_BCN_FILTER",
-    (unsigned char *)"PS_ENABLE_HEART_BEAT",
-    (unsigned char *)"PS_ENABLE_RSSI_MONITOR",
-    (unsigned char *)"PS_DATA_INACTIVITY_TIMEOUT",
-    (unsigned char *)"RF_SETTLING_TIME_CLK",
-    (unsigned char *)"SUPPORTED_RATES_11B",
-    (unsigned char *)"SUPPORTED_RATES_11A",
-    (unsigned char *)"PHY_MODE",
-    (unsigned char *)"DOT11_MODE",
-    (unsigned char *)"OPERATIONAL_RATE_SET",
-    (unsigned char *)"EXTENDED_OPERATIONAL_RATE_SET",
-    (unsigned char *)"PROPRIETARY_OPERATIONAL_RATE_SET",
-    (unsigned char *)"BSSID",
-    (unsigned char *)"LISTEN_INTERVAL",
-    (unsigned char *)"VALID_CHANNEL_LIST",
-    (unsigned char *)"CURRENT_CHANNEL",
-    (unsigned char *)"DEFAULT_RATE_INDEX_5GHZ",
-    (unsigned char *)"DEFAULT_RATE_INDEX_24GHZ",
-    (unsigned char *)"RATE_ADAPTATION_TYPE",
-    (unsigned char *)"FIXED_RATE",
-    (unsigned char *)"FIXED_RATE_MULTICAST_24GHZ",
-    (unsigned char *)"FIXED_RATE_MULTICAST_5GHZ",
-    (unsigned char *)"RETRYRATE_POLICY",
-    (unsigned char *)"RETRYRATE_SECONDARY",
-    (unsigned char *)"RETRYRATE_TERTIARY",
-    (unsigned char *)"APSD_ENABLED",
-    (unsigned char *)"SHARED_KEY_AUTH_ENABLE",
-    (unsigned char *)"OPEN_SYSTEM_AUTH_ENABLE",
-    (unsigned char *)"AUTHENTICATION_TYPE",
-    (unsigned char *)"CF_POLL_REQUEST",
-    (unsigned char *)"PRIVACY_ENABLED",
-    (unsigned char *)"SHORT_PREAMBLE",
-    (unsigned char *)"SHORT_SLOT_TIME",
-    (unsigned char *)"ACCEPT_SHORT_SLOT_ASSOC_ONLY",
-    (unsigned char *)"QOS_ENABLED",
-    (unsigned char *)"HCF_ENABLED",
-    (unsigned char *)"RSN_ENABLED",
-    (unsigned char *)"BACKGROUND_SCAN_PERIOD",
-    (unsigned char *)"MAX_NUM_PRE_AUTH",
-    (unsigned char *)"PREAUTH_CLNUP_TIMEOUT",
-    (unsigned char *)"RELEASE_AID_TIMEOUT",
-    (unsigned char *)"HEART_BEAT_THRESHOLD",
-    (unsigned char *)"PROBE_AFTER_HB_FAIL_TIMEOUT",
-    (unsigned char *)"MANUFACTURER_OUI",
-    (unsigned char *)"MANUFACTURER_NAME",
-    (unsigned char *)"MODEL_NUMBER",
-    (unsigned char *)"MODEL_NAME",
-    (unsigned char *)"MANUFACTURER_PRODUCT_NAME",
-    (unsigned char *)"MANUFACTURER_PRODUCT_VERSION",
-    (unsigned char *)"11D_ENABLED",
-    (unsigned char *)"MAX_TX_POWER_2_4",
-    (unsigned char *)"MAX_TX_POWER_5",
-    (unsigned char *)"NETWORK_DENSITY",
-    (unsigned char *)"ADAPTIVE_THRESHOLD_ALGORITHM",
-    (unsigned char *)"CURRENT_TX_ANTENNA",
-    (unsigned char *)"CURRENT_RX_ANTENNA",
-    (unsigned char *)"CURRENT_TX_POWER_LEVEL",
-    (unsigned char *)"POWER_STATE_PER_CHAIN",
-    (unsigned char *)"NEW_BSS_FOUND_IND",
-    (unsigned char *)"PROPRIETARY_ANI_FEATURES_ENABLED",
-    (unsigned char *)"PROPRIETARY_RATES_ENABLED",
-    (unsigned char *)"AP_NODE_NAME",
-    (unsigned char *)"COUNTRY_CODE",
-    (unsigned char *)"11H_ENABLED",
-    (unsigned char *)"WT_CNF_TIMEOUT",
-    (unsigned char *)"KEEPALIVE_TIMEOUT",
-    (unsigned char *)"PROXIMITY",
-    (unsigned char *)"LOG_LEVEL",
-    (unsigned char *)"OLBC_DETECT_TIMEOUT",
-    (unsigned char *)"PROTECTION_ENABLED",
-    (unsigned char *)"11G_PROTECTION_ALWAYS",
-    (unsigned char *)"FORCE_POLICY_PROTECTION",
-    (unsigned char *)"11G_SHORT_PREAMBLE_ENABLED",
-    (unsigned char *)"11G_SHORT_SLOT_TIME_ENABLED",
-    (unsigned char *)"CAL_PERIOD",
-    (unsigned char *)"STATS_PERIOD",
-    (unsigned char *)"CAL_CONTROL",
-    (unsigned char *)"11G_ONLY_POLICY",
-    (unsigned char *)"PACKET_CLASSIFICATION",
-    (unsigned char *)"WME_ENABLED",
-    (unsigned char *)"ADDTS_RSP_TIMEOUT",
-    (unsigned char *)"MAX_SP_LENGTH",
-    (unsigned char *)"KEEP_ALIVE_STA_LIMIT_THRESHOLD",
-    (unsigned char *)"SEND_SINGLE_SSID_ALWAYS",
-    (unsigned char *)"WSM_ENABLED",
-    (unsigned char *)"PROP_CAPABILITY",
-    (unsigned char *)"EDCA_PROFILE",
-    (unsigned char *)"EDCA_ANI_ACBK_LOCAL",
-    (unsigned char *)"EDCA_ANI_ACBE_LOCAL",
-    (unsigned char *)"EDCA_ANI_ACVI_LOCAL",
-    (unsigned char *)"EDCA_ANI_ACVO_LOCAL",
-    (unsigned char *)"EDCA_ANI_ACBK",
-    (unsigned char *)"EDCA_ANI_ACBE",
-    (unsigned char *)"EDCA_ANI_ACVI",
-    (unsigned char *)"EDCA_ANI_ACVO",
-    (unsigned char *)"EDCA_WME_ACBK_LOCAL",
-    (unsigned char *)"EDCA_WME_ACBE_LOCAL",
-    (unsigned char *)"EDCA_WME_ACVI_LOCAL",
-    (unsigned char *)"EDCA_WME_ACVO_LOCAL",
-    (unsigned char *)"EDCA_WME_ACBK",
-    (unsigned char *)"EDCA_WME_ACBE",
-    (unsigned char *)"EDCA_WME_ACVI",
-    (unsigned char *)"EDCA_WME_ACVO",
-    (unsigned char *)"EDCA_TIT_DEMO_ACBK_LOCAL",
-    (unsigned char *)"EDCA_TIT_DEMO_ACBE_LOCAL",
-    (unsigned char *)"EDCA_TIT_DEMO_ACVI_LOCAL",
-    (unsigned char *)"EDCA_TIT_DEMO_ACVO_LOCAL",
-    (unsigned char *)"EDCA_TIT_DEMO_ACBK",
-    (unsigned char *)"EDCA_TIT_DEMO_ACBE",
-    (unsigned char *)"EDCA_TIT_DEMO_ACVI",
-    (unsigned char *)"EDCA_TIT_DEMO_ACVO",
-    (unsigned char *)"RDET_FLAG",
-    (unsigned char *)"RADAR_CHANNEL_LIST",
-    (unsigned char *)"LOCAL_POWER_CONSTRAINT",
-    (unsigned char *)"ADMIT_POLICY",
-    (unsigned char *)"ADMIT_BWFACTOR",
-    (unsigned char *)"MAX_CONSECUTIVE_BACKGROUND_SCAN_FAILURE",
-    (unsigned char *)"CHANNEL_BONDING_MODE",
-    (unsigned char *)"CB_SECONDARY_CHANNEL_STATE",
-    (unsigned char *)"DYNAMIC_THRESHOLD_ZERO",
-    (unsigned char *)"DYNAMIC_THRESHOLD_ONE",
-    (unsigned char *)"DYNAMIC_THRESHOLD_TWO",
-    (unsigned char *)"TRIG_STA_BK_SCAN",
-    (unsigned char *)"DYNAMIC_PROFILE_SWITCHING",
-    (unsigned char *)"SCAN_CONTROL_LIST",
-    (unsigned char *)"MIMO_ENABLED",
-    (unsigned char *)"BLOCK_ACK_ENABLED",
-    (unsigned char *)"BA_ACTIVITY_CHECK_TIMEOUT",
-    (unsigned char *)"HT_RX_STBC",
-    (unsigned char *)"HT_CAP_INFO",
-    (unsigned char *)"HT_AMPDU_PARAMS",
-    (unsigned char *)"SUPPORTED_MCS_SET",
-    (unsigned char *)"EXT_HT_CAP_INFO",
-    (unsigned char *)"TX_BF_CAP",
-    (unsigned char *)"AS_CAP",
-    (unsigned char *)"HT_INFO_FIELD1",
-    (unsigned char *)"HT_INFO_FIELD2",
-    (unsigned char *)"HT_INFO_FIELD3",
-    (unsigned char *)"BASIC_MCS_SET",
-    (unsigned char *)"CURRENT_MCS_SET",
-    (unsigned char *)"GREENFIELD_CAPABILITY",
-    (unsigned char *)"VHT_MAX_MPDU_LENGTH",
-    (unsigned char *)"VHT_SUPPORTED_CHAN_WIDTH_SET",
-    (unsigned char *)"VHT_LDPC_CODING_CAP",
-    (unsigned char *)"VHT_SHORT_GI_80MHZ",
-    (unsigned char *)"VHT_SHORT_GI_160_AND_80_PLUS_80MHZ",
-    (unsigned char *)"VHT_TXSTBC",
-    (unsigned char *)"VHT_RXSTBC",
-    (unsigned char *)"VHT_SU_BEAMFORMER_CAP",
-    (unsigned char *)"VHT_SU_BEAMFORMEE_CAP",
-    (unsigned char *)"VHT_CSN_BEAMFORMEE_ANT_SUPPORTED",
-    (unsigned char *)"VHT_NUM_SOUNDING_DIMENSIONS",
-    (unsigned char *)"VHT_MU_BEAMFORMER_CAP",
-    (unsigned char *)"VHT_MU_BEAMFORMEE_CAP",
-    (unsigned char *)"VHT_TXOP_PS",
-    (unsigned char *)"VHT_HTC_VHTC_CAP",
-    (unsigned char *)"VHT_AMPDU_LEN_EXPONENT",
-    (unsigned char *)"VHT_LINK_ADAPTATION_CAP",
-    (unsigned char *)"VHT_RX_ANT_PATTERN",
-    (unsigned char *)"VHT_TX_ANT_PATTERN",
-    (unsigned char *)"VHT_RX_MCS_MAP",
-    (unsigned char *)"VHT_TX_MCS_MAP",
-    (unsigned char *)"VHT_RX_HIGHEST_SUPPORTED_DATA_RATE",
-    (unsigned char *)"VHT_TX_HIGHEST_SUPPORTED_DATA_RATE",
-    (unsigned char *)"VHT_CHANNEL_WIDTH",
-    (unsigned char *)"VHT_CHANNEL_CENTER_FREQ_SEGMENT1",
-    (unsigned char *)"VHT_CHANNEL_CENTER_FREQ_SEGMENT2",
-    (unsigned char *)"VHT_BASIC_MCS_SET",
-    (unsigned char *)"VHT_MU_MIMO_CAP_STA_COUNT",
-    (unsigned char *)"VHT_SS_UNDER_UTIL",
-    (unsigned char *)"VHT_40MHZ_UTILIZATION",
-    (unsigned char *)"VHT_80MHZ_UTILIZATION",
-    (unsigned char *)"VHT_160MHZ_UTILIZATION",
-    (unsigned char *)"MAX_AMSDU_LENGTH",
-    (unsigned char *)"MPDU_DENSITY",
-    (unsigned char *)"NUM_BUFF_ADVERT",
-    (unsigned char *)"MAX_RX_AMPDU_FACTOR",
-    (unsigned char *)"SHORT_GI_20MHZ",
-    (unsigned char *)"SHORT_GI_40MHZ",
-    (unsigned char *)"RIFS_ENABLED",
-    (unsigned char *)"MAX_PS_POLL",
-    (unsigned char *)"NUM_BEACON_PER_RSSI_AVERAGE",
-    (unsigned char *)"RSSI_FILTER_PERIOD",
-    (unsigned char *)"MIN_RSSI_THRESHOLD",
-    (unsigned char *)"NTH_BEACON_FILTER",
-    (unsigned char *)"BROADCAST_FRAME_FILTER_ENABLE",
-    (unsigned char *)"SCAN_IN_POWERSAVE",
-    (unsigned char *)"IGNORE_DTIM",
-    (unsigned char *)"WOWLAN_UCAST_PATTERN_FILTER_ENABLE",
-    (unsigned char *)"WOWLAN_CHANNEL_SWITCH_ENABLE",
-    (unsigned char *)"WOWLAN_DEAUTH_ENABLE",
-    (unsigned char *)"WOWLAN_DISASSOC_ENABLE",
-    (unsigned char *)"WOWLAN_MAX_MISSED_BEACON",
-    (unsigned char *)"WOWLAN_MAX_SLEEP_PERIOD",
-    (unsigned char *)"BA_TIMEOUT",
-    (unsigned char *)"BA_THRESHOLD_HIGH",
-    (unsigned char *)"MAX_BA_BUFFERS",
-    (unsigned char *)"MAX_BA_SESSIONS",
-    (unsigned char *)"BA_AUTO_SETUP",
-    (unsigned char *)"ADDBA_REQ_DECLINE",
-    (unsigned char *)"BG_SCAN_CHANNEL_LIST",
-    (unsigned char *)"MAX_MEDIUM_TIME",
-    (unsigned char *)"MAX_MPDUS_IN_AMPDU",
-    (unsigned char *)"IBSS_AUTO_BSSID",
-    (unsigned char *)"PROBE_REQ_ADDNIE_FLAG",
-    (unsigned char *)"PROBE_REQ_ADDNIE_DATA",
-    (unsigned char *)"PROBE_RSP_ADDNIE_FLAG",
-    (unsigned char *)"PROBE_RSP_ADDNIE_DATA1",
-    (unsigned char *)"PROBE_RSP_ADDNIE_DATA2",
-    (unsigned char *)"PROBE_RSP_ADDNIE_DATA3",
-    (unsigned char *)"ASSOC_RSP_ADDNIE_FLAG",
-    (unsigned char *)"ASSOC_RSP_ADDNIE_DATA",
-    (unsigned char *)"PROBE_REQ_ADDNP2PIE_FLAG",
-    (unsigned char *)"PROBE_REQ_ADDNP2PIE_DATA",
-    (unsigned char *)"PROBE_RSP_BCN_ADDNIE_FLAG",
-    (unsigned char *)"PROBE_RSP_BCN_ADDNIE_DATA",
-    (unsigned char *)"WPS_ENABLE",
-    (unsigned char *)"WPS_STATE",
-    (unsigned char *)"WPS_PROBE_REQ_FLAG",
-    (unsigned char *)"WPS_VERSION",
-    (unsigned char *)"WPS_REQUEST_TYPE",
-    (unsigned char *)"WPS_CFG_METHOD",
-    (unsigned char *)"WPS_UUID",
-    (unsigned char *)"WPS_PRIMARY_DEVICE_CATEGORY",
-    (unsigned char *)"WPS_PIMARY_DEVICE_OUI",
-    (unsigned char *)"WPS_DEVICE_SUB_CATEGORY",
-    (unsigned char *)"WPS_ASSOCIATION_STATE",
-    (unsigned char *)"WPS_CONFIGURATION_ERROR",
-    (unsigned char *)"WPS_DEVICE_PASSWORD_ID",
-    (unsigned char *)"WPS_ASSOC_METHOD",
-    (unsigned char *)"LOW_GAIN_OVERRIDE",
-    (unsigned char *)"ENABLE_PHY_AGC_LISTEN_MODE",
-    (unsigned char *)"RPE_POLLING_THRESHOLD",
-    (unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC0_REG",
-    (unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC1_REG",
-    (unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC2_REG",
-    (unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC3_REG",
-    (unsigned char *)"NO_OF_ONCHIP_REORDER_SESSIONS",
-    (unsigned char *)"SINGLE_TID_RC",
-    (unsigned char *)"RRM_ENABLED",
-    (unsigned char *)"RRM_OPERATING_CHAN_MAX",
-    (unsigned char *)"RRM_NON_OPERATING_CHAN_MAX",
-    (unsigned char *)"TX_PWR_CTRL_ENABLE",
-    (unsigned char *)"MCAST_BCAST_FILTER_SETTING",
-    (unsigned char *)"BTC_DHCP_BT_SLOTS_TO_BLOCK",
-    (unsigned char *)"DYNAMIC_PS_POLL_VALUE",
-    (unsigned char *)"PS_NULLDATA_AP_RESP_TIMEOUT",
-    (unsigned char *)"TELE_BCN_WAKEUP_EN",
-    (unsigned char *)"TELE_BCN_TRANS_LI",
-    (unsigned char *)"TELE_BCN_TRANS_LI_IDLE_BCNS",
-    (unsigned char *)"TELE_BCN_MAX_LI",
-    (unsigned char *)"TELE_BCN_MAX_LI_IDLE_BCNS",
-    (unsigned char *)"BTC_A2DP_DHCP_BT_SUB_INTERVALS",
-    (unsigned char *)"INFRA_STA_KEEP_ALIVE_PERIOD",
-    (unsigned char *)"ASSOC_STA_LIMIT",
-    (unsigned char *)"SAP_CHANNEL_SELECT_START_CHANNEL",
-    (unsigned char *)"SAP_CHANNEL_SELECT_END_CHANNEL",
-    (unsigned char *)"SAP_CHANNEL_SELECT_OPERATING_BAND",
-    (unsigned char *)"AP_DATA_AVAIL_POLL_PERIOD",
-    (unsigned char *)"ENABLE_CLOSE_LOOP",
-    (unsigned char *)"ENABLE_LTE_COEX",
-    (unsigned char *)"AP_KEEP_ALIVE_TIMEOUT",
-    (unsigned char *)"GO_KEEP_ALIVE_TIMEOUT",
-    (unsigned char *)"ENABLE_MC_ADDR_LIST",
-    (unsigned char *)"ENABLE_UC_FILTER",
-    (unsigned char *)"ENABLE_LPWR_IMG_TRANSITION",
-    (unsigned char *)"ENABLE_MCC_ADAPTIVE_SCHED",
-    (unsigned char *)"DISABLE_LDPC_WITH_TXBF_AP",
-    (unsigned char *)"AP_LINK_MONITOR_TIMEOUT",
+	(unsigned char *)"STA_ID",
+	(unsigned char *)"CF_POLLABLE",
+	(unsigned char *)"CFP_PERIOD",
+	(unsigned char *)"CFP_MAX_DURATION",
+	(unsigned char *)"SSID",
+	(unsigned char *)"BEACON_INTERVAL",
+	(unsigned char *)"DTIM_PERIOD",
+	(unsigned char *)"WEP_KEY_LENGTH",
+	(unsigned char *)"WEP_DEFAULT_KEY_1",
+	(unsigned char *)"WEP_DEFAULT_KEY_2",
+	(unsigned char *)"WEP_DEFAULT_KEY_3",
+	(unsigned char *)"WEP_DEFAULT_KEY_4",
+	(unsigned char *)"WEP_DEFAULT_KEYID",
+	(unsigned char *)"EXCLUDE_UNENCRYPTED",
+	(unsigned char *)"RTS_THRESHOLD",
+	(unsigned char *)"SHORT_RETRY_LIMIT",
+	(unsigned char *)"LONG_RETRY_LIMIT",
+	(unsigned char *)"FRAGMENTATION_THRESHOLD",
+	(unsigned char *)"ACTIVE_MINIMUM_CHANNEL_TIME",
+	(unsigned char *)"ACTIVE_MAXIMUM_CHANNEL_TIME",
+	(unsigned char *)"PASSIVE_MINIMUM_CHANNEL_TIME",
+	(unsigned char *)"PASSIVE_MAXIMUM_CHANNEL_TIME",
+	(unsigned char *)"JOIN_FAILURE_TIMEOUT",
+	(unsigned char *)"AUTHENTICATE_FAILURE_TIMEOUT",
+	(unsigned char *)"AUTHENTICATE_RSP_TIMEOUT",
+	(unsigned char *)"ASSOCIATION_FAILURE_TIMEOUT",
+	(unsigned char *)"REASSOCIATION_FAILURE_TIMEOUT",
+	(unsigned char *)"RA_PERIODICITY_TIMEOUT_IN_PS",
+	(unsigned char *)"PS_ENABLE_BCN_FILTER",
+	(unsigned char *)"PS_ENABLE_HEART_BEAT",
+	(unsigned char *)"PS_ENABLE_RSSI_MONITOR",
+	(unsigned char *)"PS_DATA_INACTIVITY_TIMEOUT",
+	(unsigned char *)"RF_SETTLING_TIME_CLK",
+	(unsigned char *)"SUPPORTED_RATES_11B",
+	(unsigned char *)"SUPPORTED_RATES_11A",
+	(unsigned char *)"PHY_MODE",
+	(unsigned char *)"DOT11_MODE",
+	(unsigned char *)"OPERATIONAL_RATE_SET",
+	(unsigned char *)"EXTENDED_OPERATIONAL_RATE_SET",
+	(unsigned char *)"PROPRIETARY_OPERATIONAL_RATE_SET",
+	(unsigned char *)"BSSID",
+	(unsigned char *)"LISTEN_INTERVAL",
+	(unsigned char *)"VALID_CHANNEL_LIST",
+	(unsigned char *)"CURRENT_CHANNEL",
+	(unsigned char *)"DEFAULT_RATE_INDEX_5GHZ",
+	(unsigned char *)"DEFAULT_RATE_INDEX_24GHZ",
+	(unsigned char *)"RATE_ADAPTATION_TYPE",
+	(unsigned char *)"FIXED_RATE",
+	(unsigned char *)"FIXED_RATE_MULTICAST_24GHZ",
+	(unsigned char *)"FIXED_RATE_MULTICAST_5GHZ",
+	(unsigned char *)"RETRYRATE_POLICY",
+	(unsigned char *)"RETRYRATE_SECONDARY",
+	(unsigned char *)"RETRYRATE_TERTIARY",
+	(unsigned char *)"APSD_ENABLED",
+	(unsigned char *)"SHARED_KEY_AUTH_ENABLE",
+	(unsigned char *)"OPEN_SYSTEM_AUTH_ENABLE",
+	(unsigned char *)"AUTHENTICATION_TYPE",
+	(unsigned char *)"CF_POLL_REQUEST",
+	(unsigned char *)"PRIVACY_ENABLED",
+	(unsigned char *)"SHORT_PREAMBLE",
+	(unsigned char *)"SHORT_SLOT_TIME",
+	(unsigned char *)"ACCEPT_SHORT_SLOT_ASSOC_ONLY",
+	(unsigned char *)"QOS_ENABLED",
+	(unsigned char *)"HCF_ENABLED",
+	(unsigned char *)"RSN_ENABLED",
+	(unsigned char *)"BACKGROUND_SCAN_PERIOD",
+	(unsigned char *)"MAX_NUM_PRE_AUTH",
+	(unsigned char *)"PREAUTH_CLNUP_TIMEOUT",
+	(unsigned char *)"RELEASE_AID_TIMEOUT",
+	(unsigned char *)"HEART_BEAT_THRESHOLD",
+	(unsigned char *)"PROBE_AFTER_HB_FAIL_TIMEOUT",
+	(unsigned char *)"MANUFACTURER_OUI",
+	(unsigned char *)"MANUFACTURER_NAME",
+	(unsigned char *)"MODEL_NUMBER",
+	(unsigned char *)"MODEL_NAME",
+	(unsigned char *)"MANUFACTURER_PRODUCT_NAME",
+	(unsigned char *)"MANUFACTURER_PRODUCT_VERSION",
+	(unsigned char *)"11D_ENABLED",
+	(unsigned char *)"MAX_TX_POWER_2_4",
+	(unsigned char *)"MAX_TX_POWER_5",
+	(unsigned char *)"NETWORK_DENSITY",
+	(unsigned char *)"ADAPTIVE_THRESHOLD_ALGORITHM",
+	(unsigned char *)"CURRENT_TX_ANTENNA",
+	(unsigned char *)"CURRENT_RX_ANTENNA",
+	(unsigned char *)"CURRENT_TX_POWER_LEVEL",
+	(unsigned char *)"POWER_STATE_PER_CHAIN",
+	(unsigned char *)"NEW_BSS_FOUND_IND",
+	(unsigned char *)"PROPRIETARY_ANI_FEATURES_ENABLED",
+	(unsigned char *)"PROPRIETARY_RATES_ENABLED",
+	(unsigned char *)"AP_NODE_NAME",
+	(unsigned char *)"COUNTRY_CODE",
+	(unsigned char *)"11H_ENABLED",
+	(unsigned char *)"WT_CNF_TIMEOUT",
+	(unsigned char *)"KEEPALIVE_TIMEOUT",
+	(unsigned char *)"PROXIMITY",
+	(unsigned char *)"LOG_LEVEL",
+	(unsigned char *)"OLBC_DETECT_TIMEOUT",
+	(unsigned char *)"PROTECTION_ENABLED",
+	(unsigned char *)"11G_PROTECTION_ALWAYS",
+	(unsigned char *)"FORCE_POLICY_PROTECTION",
+	(unsigned char *)"11G_SHORT_PREAMBLE_ENABLED",
+	(unsigned char *)"11G_SHORT_SLOT_TIME_ENABLED",
+	(unsigned char *)"CAL_PERIOD",
+	(unsigned char *)"STATS_PERIOD",
+	(unsigned char *)"CAL_CONTROL",
+	(unsigned char *)"11G_ONLY_POLICY",
+	(unsigned char *)"PACKET_CLASSIFICATION",
+	(unsigned char *)"WME_ENABLED",
+	(unsigned char *)"ADDTS_RSP_TIMEOUT",
+	(unsigned char *)"MAX_SP_LENGTH",
+	(unsigned char *)"KEEP_ALIVE_STA_LIMIT_THRESHOLD",
+	(unsigned char *)"SEND_SINGLE_SSID_ALWAYS",
+	(unsigned char *)"WSM_ENABLED",
+	(unsigned char *)"PROP_CAPABILITY",
+	(unsigned char *)"EDCA_PROFILE",
+	(unsigned char *)"EDCA_ANI_ACBK_LOCAL",
+	(unsigned char *)"EDCA_ANI_ACBE_LOCAL",
+	(unsigned char *)"EDCA_ANI_ACVI_LOCAL",
+	(unsigned char *)"EDCA_ANI_ACVO_LOCAL",
+	(unsigned char *)"EDCA_ANI_ACBK",
+	(unsigned char *)"EDCA_ANI_ACBE",
+	(unsigned char *)"EDCA_ANI_ACVI",
+	(unsigned char *)"EDCA_ANI_ACVO",
+	(unsigned char *)"EDCA_WME_ACBK_LOCAL",
+	(unsigned char *)"EDCA_WME_ACBE_LOCAL",
+	(unsigned char *)"EDCA_WME_ACVI_LOCAL",
+	(unsigned char *)"EDCA_WME_ACVO_LOCAL",
+	(unsigned char *)"EDCA_WME_ACBK",
+	(unsigned char *)"EDCA_WME_ACBE",
+	(unsigned char *)"EDCA_WME_ACVI",
+	(unsigned char *)"EDCA_WME_ACVO",
+	(unsigned char *)"EDCA_TIT_DEMO_ACBK_LOCAL",
+	(unsigned char *)"EDCA_TIT_DEMO_ACBE_LOCAL",
+	(unsigned char *)"EDCA_TIT_DEMO_ACVI_LOCAL",
+	(unsigned char *)"EDCA_TIT_DEMO_ACVO_LOCAL",
+	(unsigned char *)"EDCA_TIT_DEMO_ACBK",
+	(unsigned char *)"EDCA_TIT_DEMO_ACBE",
+	(unsigned char *)"EDCA_TIT_DEMO_ACVI",
+	(unsigned char *)"EDCA_TIT_DEMO_ACVO",
+	(unsigned char *)"RDET_FLAG",
+	(unsigned char *)"RADAR_CHANNEL_LIST",
+	(unsigned char *)"LOCAL_POWER_CONSTRAINT",
+	(unsigned char *)"ADMIT_POLICY",
+	(unsigned char *)"ADMIT_BWFACTOR",
+	(unsigned char *)"MAX_CONSECUTIVE_BACKGROUND_SCAN_FAILURE",
+	(unsigned char *)"CHANNEL_BONDING_MODE",
+	(unsigned char *)"CB_SECONDARY_CHANNEL_STATE",
+	(unsigned char *)"DYNAMIC_THRESHOLD_ZERO",
+	(unsigned char *)"DYNAMIC_THRESHOLD_ONE",
+	(unsigned char *)"DYNAMIC_THRESHOLD_TWO",
+	(unsigned char *)"TRIG_STA_BK_SCAN",
+	(unsigned char *)"DYNAMIC_PROFILE_SWITCHING",
+	(unsigned char *)"SCAN_CONTROL_LIST",
+	(unsigned char *)"MIMO_ENABLED",
+	(unsigned char *)"BLOCK_ACK_ENABLED",
+	(unsigned char *)"BA_ACTIVITY_CHECK_TIMEOUT",
+	(unsigned char *)"HT_RX_STBC",
+	(unsigned char *)"HT_CAP_INFO",
+	(unsigned char *)"HT_AMPDU_PARAMS",
+	(unsigned char *)"SUPPORTED_MCS_SET",
+	(unsigned char *)"EXT_HT_CAP_INFO",
+	(unsigned char *)"TX_BF_CAP",
+	(unsigned char *)"AS_CAP",
+	(unsigned char *)"HT_INFO_FIELD1",
+	(unsigned char *)"HT_INFO_FIELD2",
+	(unsigned char *)"HT_INFO_FIELD3",
+	(unsigned char *)"BASIC_MCS_SET",
+	(unsigned char *)"CURRENT_MCS_SET",
+	(unsigned char *)"GREENFIELD_CAPABILITY",
+	(unsigned char *)"VHT_MAX_MPDU_LENGTH",
+	(unsigned char *)"VHT_SUPPORTED_CHAN_WIDTH_SET",
+	(unsigned char *)"VHT_LDPC_CODING_CAP",
+	(unsigned char *)"VHT_SHORT_GI_80MHZ",
+	(unsigned char *)"VHT_SHORT_GI_160_AND_80_PLUS_80MHZ",
+	(unsigned char *)"VHT_TXSTBC",
+	(unsigned char *)"VHT_RXSTBC",
+	(unsigned char *)"VHT_SU_BEAMFORMER_CAP",
+	(unsigned char *)"VHT_SU_BEAMFORMEE_CAP",
+	(unsigned char *)"VHT_CSN_BEAMFORMEE_ANT_SUPPORTED",
+	(unsigned char *)"VHT_NUM_SOUNDING_DIMENSIONS",
+	(unsigned char *)"VHT_MU_BEAMFORMER_CAP",
+	(unsigned char *)"VHT_MU_BEAMFORMEE_CAP",
+	(unsigned char *)"VHT_TXOP_PS",
+	(unsigned char *)"VHT_HTC_VHTC_CAP",
+	(unsigned char *)"VHT_AMPDU_LEN_EXPONENT",
+	(unsigned char *)"VHT_LINK_ADAPTATION_CAP",
+	(unsigned char *)"VHT_RX_ANT_PATTERN",
+	(unsigned char *)"VHT_TX_ANT_PATTERN",
+	(unsigned char *)"VHT_RX_MCS_MAP",
+	(unsigned char *)"VHT_TX_MCS_MAP",
+	(unsigned char *)"VHT_RX_HIGHEST_SUPPORTED_DATA_RATE",
+	(unsigned char *)"VHT_TX_HIGHEST_SUPPORTED_DATA_RATE",
+	(unsigned char *)"VHT_CHANNEL_WIDTH",
+	(unsigned char *)"VHT_CHANNEL_CENTER_FREQ_SEGMENT1",
+	(unsigned char *)"VHT_CHANNEL_CENTER_FREQ_SEGMENT2",
+	(unsigned char *)"VHT_BASIC_MCS_SET",
+	(unsigned char *)"VHT_MU_MIMO_CAP_STA_COUNT",
+	(unsigned char *)"VHT_SS_UNDER_UTIL",
+	(unsigned char *)"VHT_40MHZ_UTILIZATION",
+	(unsigned char *)"VHT_80MHZ_UTILIZATION",
+	(unsigned char *)"VHT_160MHZ_UTILIZATION",
+	(unsigned char *)"MAX_AMSDU_LENGTH",
+	(unsigned char *)"MPDU_DENSITY",
+	(unsigned char *)"NUM_BUFF_ADVERT",
+	(unsigned char *)"MAX_RX_AMPDU_FACTOR",
+	(unsigned char *)"SHORT_GI_20MHZ",
+	(unsigned char *)"SHORT_GI_40MHZ",
+	(unsigned char *)"RIFS_ENABLED",
+	(unsigned char *)"MAX_PS_POLL",
+	(unsigned char *)"NUM_BEACON_PER_RSSI_AVERAGE",
+	(unsigned char *)"RSSI_FILTER_PERIOD",
+	(unsigned char *)"MIN_RSSI_THRESHOLD",
+	(unsigned char *)"NTH_BEACON_FILTER",
+	(unsigned char *)"BROADCAST_FRAME_FILTER_ENABLE",
+	(unsigned char *)"SCAN_IN_POWERSAVE",
+	(unsigned char *)"IGNORE_DTIM",
+	(unsigned char *)"WOWLAN_UCAST_PATTERN_FILTER_ENABLE",
+	(unsigned char *)"WOWLAN_CHANNEL_SWITCH_ENABLE",
+	(unsigned char *)"WOWLAN_DEAUTH_ENABLE",
+	(unsigned char *)"WOWLAN_DISASSOC_ENABLE",
+	(unsigned char *)"WOWLAN_MAX_MISSED_BEACON",
+	(unsigned char *)"WOWLAN_MAX_SLEEP_PERIOD",
+	(unsigned char *)"BA_TIMEOUT",
+	(unsigned char *)"BA_THRESHOLD_HIGH",
+	(unsigned char *)"MAX_BA_BUFFERS",
+	(unsigned char *)"MAX_BA_SESSIONS",
+	(unsigned char *)"BA_AUTO_SETUP",
+	(unsigned char *)"ADDBA_REQ_DECLINE",
+	(unsigned char *)"DEL_ALL_RX_BA_SESSIONS_2_4_G_BTC",
+	(unsigned char *)"BG_SCAN_CHANNEL_LIST",
+	(unsigned char *)"MAX_MEDIUM_TIME",
+	(unsigned char *)"MAX_MPDUS_IN_AMPDU",
+	(unsigned char *)"IBSS_AUTO_BSSID",
+	(unsigned char *)"PROBE_REQ_ADDNIE_FLAG",
+	(unsigned char *)"PROBE_REQ_ADDNIE_DATA",
+	(unsigned char *)"PROBE_RSP_ADDNIE_FLAG",
+	(unsigned char *)"PROBE_RSP_ADDNIE_DATA1",
+	(unsigned char *)"PROBE_RSP_ADDNIE_DATA2",
+	(unsigned char *)"PROBE_RSP_ADDNIE_DATA3",
+	(unsigned char *)"ASSOC_RSP_ADDNIE_FLAG",
+	(unsigned char *)"ASSOC_RSP_ADDNIE_DATA",
+	(unsigned char *)"PROBE_REQ_ADDNP2PIE_FLAG",
+	(unsigned char *)"PROBE_REQ_ADDNP2PIE_DATA",
+	(unsigned char *)"PROBE_RSP_BCN_ADDNIE_FLAG",
+	(unsigned char *)"PROBE_RSP_BCN_ADDNIE_DATA",
+	(unsigned char *)"WPS_ENABLE",
+	(unsigned char *)"WPS_STATE",
+	(unsigned char *)"WPS_PROBE_REQ_FLAG",
+	(unsigned char *)"WPS_VERSION",
+	(unsigned char *)"WPS_REQUEST_TYPE",
+	(unsigned char *)"WPS_CFG_METHOD",
+	(unsigned char *)"WPS_UUID",
+	(unsigned char *)"WPS_PRIMARY_DEVICE_CATEGORY",
+	(unsigned char *)"WPS_PIMARY_DEVICE_OUI",
+	(unsigned char *)"WPS_DEVICE_SUB_CATEGORY",
+	(unsigned char *)"WPS_ASSOCIATION_STATE",
+	(unsigned char *)"WPS_CONFIGURATION_ERROR",
+	(unsigned char *)"WPS_DEVICE_PASSWORD_ID",
+	(unsigned char *)"WPS_ASSOC_METHOD",
+	(unsigned char *)"LOW_GAIN_OVERRIDE",
+	(unsigned char *)"ENABLE_PHY_AGC_LISTEN_MODE",
+	(unsigned char *)"RPE_POLLING_THRESHOLD",
+	(unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC0_REG",
+	(unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC1_REG",
+	(unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC2_REG",
+	(unsigned char *)"RPE_AGING_THRESHOLD_FOR_AC3_REG",
+	(unsigned char *)"NO_OF_ONCHIP_REORDER_SESSIONS",
+	(unsigned char *)"SINGLE_TID_RC",
+	(unsigned char *)"RRM_ENABLED",
+	(unsigned char *)"RRM_OPERATING_CHAN_MAX",
+	(unsigned char *)"RRM_NON_OPERATING_CHAN_MAX",
+	(unsigned char *)"TX_PWR_CTRL_ENABLE",
+	(unsigned char *)"MCAST_BCAST_FILTER_SETTING",
+	(unsigned char *)"BTC_DHCP_BT_SLOTS_TO_BLOCK",
+	(unsigned char *)"DYNAMIC_PS_POLL_VALUE",
+	(unsigned char *)"PS_NULLDATA_AP_RESP_TIMEOUT",
+	(unsigned char *)"TELE_BCN_WAKEUP_EN",
+	(unsigned char *)"TELE_BCN_TRANS_LI",
+	(unsigned char *)"TELE_BCN_TRANS_LI_IDLE_BCNS",
+	(unsigned char *)"TELE_BCN_MAX_LI",
+	(unsigned char *)"TELE_BCN_MAX_LI_IDLE_BCNS",
+	(unsigned char *)"BTC_A2DP_DHCP_BT_SUB_INTERVALS",
+	(unsigned char *)"INFRA_STA_KEEP_ALIVE_PERIOD",
+	(unsigned char *)"ASSOC_STA_LIMIT",
+	(unsigned char *)"SAP_CHANNEL_SELECT_START_CHANNEL",
+	(unsigned char *)"SAP_CHANNEL_SELECT_END_CHANNEL",
+	(unsigned char *)"SAP_CHANNEL_SELECT_OPERATING_BAND",
+	(unsigned char *)"AP_DATA_AVAIL_POLL_PERIOD",
+	(unsigned char *)"ENABLE_CLOSE_LOOP",
+	(unsigned char *)"ENABLE_LTE_COEX",
+	(unsigned char *)"AP_KEEP_ALIVE_TIMEOUT",
+	(unsigned char *)"GO_KEEP_ALIVE_TIMEOUT",
+	(unsigned char *)"ENABLE_MC_ADDR_LIST",
+	(unsigned char *)"ENABLE_UC_FILTER",
+	(unsigned char *)"ENABLE_LPWR_IMG_TRANSITION",
+	(unsigned char *)"ENABLE_MCC_ADAPTIVE_SCHED",
+	(unsigned char *)"DISABLE_LDPC_WITH_TXBF_AP",
+	(unsigned char *)"AP_LINK_MONITOR_TIMEOUT",
+	(unsigned char *)"TDLS_QOS_WMM_UAPSD_MASK",
+	(unsigned char *)"TDLS_BUF_STA_ENABLED",
+	(unsigned char *)"TDLS_PUAPSD_INACT_TIME",
+	(unsigned char *)"TDLS_RX_FRAME_THRESHOLD",
 };
 
 
diff --git a/CORE/MAC/src/cfg/cfgUtil/cfg.txt b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
index 7240b7d..2d7fa87 100644
--- a/CORE/MAC/src/cfg/cfgUtil/cfg.txt
+++ b/CORE/MAC/src/cfg/cfgUtil/cfg.txt
@@ -4498,3 +4498,50 @@
 V    RW    NP
 HAL
 1    255    3
+
+*
+*TDLS Station's UAPSD MASK Configuration
+*
+*
+*
+WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK  I   4   7
+V    RW    NP
+LIM
+0    15    0
+V    RW    NP
+LIM
+0    15   0
+*
+*TDLS Stations Buffer STA Capability
+*
+*
+*
+WNI_CFG_TDLS_BUF_STA_ENABLED  I   4   7
+V    RW    NP
+LIM
+0    1    0
+V    RW    NP
+LIM
+0    1    0
+*TDLS Stations PUAPSD Inactivity Timer
+*
+*
+*
+WNI_CFG_TDLS_PUAPSD_INACT_TIME  I   4   7
+V    RW    NP
+LIM
+0    10    0
+V    RW    NP
+LIM
+0    10    0
+*TDLS Stations PUAPSD RX Frame Threshold
+*
+*
+*
+WNI_CFG_TDLS_RX_FRAME_THRESHOLD  I   4   7
+V    RW    NP
+LIM
+10   20    10
+V    RW    NP
+LIM
+10   20    10
diff --git a/CORE/MAC/src/include/sirParams.h b/CORE/MAC/src/include/sirParams.h
index 7dc0cf9..4f0fb91 100644
--- a/CORE/MAC/src/include/sirParams.h
+++ b/CORE/MAC/src/include/sirParams.h
@@ -568,6 +568,12 @@
 #ifdef WLAN_FEATURE_11W
 #define SIR_HAL_EXCLUDE_UNENCRYPTED_IND    (SIR_HAL_ITC_MSG_TYPES_BEGIN + 196)
 #endif
+#ifdef FEATURE_WLAN_TDLS
+/// PE <-> HAL TDLS messages
+#define SIR_HAL_TDLS_LINK_ESTABLISH_REQ (SIR_HAL_ITC_MSG_TYPES_BEGIN + 197)
+#define SIR_HAL_TDLS_LINK_ESTABLISH_REQ_RSP (SIR_HAL_ITC_MSG_TYPES_BEGIN + 198)
+#define SIR_HAL_TDLS_IND (SIR_HAL_ITC_MSG_TYPES_BEGIN + 199)
+#endif
 
 #define SIR_HAL_MSG_TYPES_END              (SIR_HAL_ITC_MSG_TYPES_BEGIN + 0xFF)
 // CFG message types
diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c
index e458129..a0ba77a 100644
--- a/CORE/MAC/src/pe/lim/limApi.c
+++ b/CORE/MAC/src/pe/lim/limApi.c
@@ -621,7 +621,18 @@
       limLog(pMac, LOGP, FL("cfg get disableLDPCWithTxbfAP failed"));
       return eSIR_FAILURE;
    }
-
+#ifdef FEATURE_WLAN_TDLS
+   if(wlan_cfgGetInt(pMac, WNI_CFG_TDLS_BUF_STA_ENABLED,(tANI_U32 *) &pMac->lim.gLimTDLSBufStaEnabled) != eSIR_SUCCESS)
+   {
+       limLog(pMac, LOGP, FL("cfg get LimTDLSBufStaEnabled failed"));
+       return eSIR_FAILURE;
+   }
+   if(wlan_cfgGetInt(pMac, WNI_CFG_TDLS_QOS_WMM_UAPSD_MASK,(tANI_U32 *) &pMac->lim.gLimTDLSUapsdMask) != eSIR_SUCCESS)
+   {
+       limLog(pMac, LOGP, FL("cfg get LimTDLSUapsdMask failed"));
+       return eSIR_FAILURE;
+   }
+#endif
    return eSIR_SUCCESS;
 }
 
diff --git a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
index cf7b4b0..235bb3e 100644
--- a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
+++ b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
@@ -1202,6 +1202,7 @@
         case eWNI_SME_TDLS_SEND_MGMT_REQ:
         case eWNI_SME_TDLS_ADD_STA_REQ:
         case eWNI_SME_TDLS_DEL_STA_REQ:
+        case eWNI_SME_TDLS_LINK_ESTABLISH_REQ:
 #endif
 #ifdef FEATURE_WLAN_TDLS_INTERNAL
         case eWNI_SME_TDLS_DISCOVERY_START_REQ:
@@ -1349,7 +1350,41 @@
             limMsg->bodyptr = NULL;
          }
             break;
+#ifdef FEATURE_WLAN_TDLS
+        case SIR_HAL_TDLS_IND:
+        {
+            tSirTdlsInd  *pTdlsInd = (tpSirTdlsInd)limMsg->bodyptr ;
+            tpDphHashNode pStaDs = NULL ;
+            tpPESession psessionEntry = NULL;
+            tANI_U8             sessionId;
+            if((psessionEntry = peFindSessionByStaId(pMac,pTdlsInd->staIdx,&sessionId))== NULL)
+            {
+               limLog(pMac, LOG1, FL("session does not exist for given bssId\n"));
+               palFreeMemory(pMac->hHdd, (tANI_U8 *)limMsg->bodyptr);
+               limMsg->bodyptr = NULL;
+               return;
+            }
+            if ((pStaDs = dphGetHashEntry(pMac, pTdlsInd->assocId, &psessionEntry->dph.dphHashTable)) == NULL)
+            {
+               limLog(pMac, LOG1, FL("pStaDs Does not exist for given staId\n"));
+               palFreeMemory(pMac->hHdd, (tANI_U8 *)limMsg->bodyptr);
+               limMsg->bodyptr = NULL;
+               return;
+            }
 
+            if ((STA_ENTRY_TDLS_PEER == pStaDs->staType))
+            {
+                limLog(pMac, LOGE,
+                       FL("received TDLS Indication from the Firmware with Reason Code %d "),
+                       pTdlsInd->reasonCode);
+                limSendSmeTDLSDelStaInd(pMac, pStaDs, psessionEntry,
+                                        /*pTdlsInd->reasonCode*/eSIR_MAC_TDLS_TEARDOWN_PEER_UNREACHABLE);
+            }
+            palFreeMemory(pMac->hHdd, (tANI_U8 *)limMsg->bodyptr);
+            limMsg->bodyptr = NULL;
+         }
+         break;
+#endif
         case SIR_HAL_P2P_NOA_ATTR_IND:
             {
                 tpPESession psessionEntry = &pMac->lim.gpSession[0];  
@@ -1888,6 +1923,14 @@
 #endif
         }
         break;
+#ifdef FEATURE_WLAN_TDLS
+        case WDA_SET_TDLS_LINK_ESTABLISH_REQ_RSP:
+        {
+            /*TODO Sunil , See how do you enhance this , Reason Code ???*/
+            limSendSmeTdlsLinkEstablishReqRsp(pMac, 0 , NULL, NULL, eSIR_SUCCESS ) ;
+            break;
+        }
+#endif
     default:
         vos_mem_free((v_VOID_t*)limMsg->bodyptr);
         limMsg->bodyptr = NULL;
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index ae2c512..3196621 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -5406,6 +5406,9 @@
         case eWNI_SME_TDLS_DEL_STA_REQ:
             limProcessSmeTdlsDelStaReq(pMac, pMsgBuf);
             break;
+        case eWNI_SME_TDLS_LINK_ESTABLISH_REQ:
+            limProcesSmeTdlsLinkEstablishReq(pMac, pMsgBuf);
+            break;
 #endif
 #ifdef FEATURE_WLAN_TDLS_INTERNAL
         case eWNI_SME_TDLS_DISCOVERY_START_REQ:
diff --git a/CORE/MAC/src/pe/lim/limProcessTdls.c b/CORE/MAC/src/pe/lim/limProcessTdls.c
index 73f3762..cb15591 100644
--- a/CORE/MAC/src/pe/lim/limProcessTdls.c
+++ b/CORE/MAC/src/pe/lim/limProcessTdls.c
@@ -1,44 +1,23 @@
 /*
- * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-/*
- * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
+  * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
+  *
+  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+  *
+  *
+  * 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.
+*/
 /*===========================================================================
 
                       limProcessTdls.c 
@@ -49,10 +28,9 @@
 
   Are listed for each API below.
 
-
-  Copyright (c) 2010 QUALCOMM Incorporated.
+  Copyright (c) 2010 Qualcomm Technologies, Inc. 
   All Rights Reserved.
-  Qualcomm Confidential and Proprietary
+  Qualcomm Technologies Confidential and Proprietary
 ===========================================================================*/
 
 /*===========================================================================
@@ -1199,10 +1177,10 @@
 
 tSirRetStatus limSendTdlsLinkSetupReqFrame(tpAniSirGlobal pMac,
             tSirMacAddr peerMac, tANI_U8 dialog, tpPESession psessionEntry,
-            tANI_U8 *addIe, tANI_U16 addIeLen) 
+            tANI_U8 *addIe, tANI_U16 addIeLen)
 {
     tDot11fTDLSSetupReq    tdlsSetupReq ;
-    tANI_U16            caps = 0 ;            
+    tANI_U16            caps = 0 ;
     tANI_U32            status = 0 ;
     tANI_U32            nPayload = 0 ;
     tANI_U32            nBytes = 0 ;
@@ -1217,12 +1195,12 @@
 //  As of now, we hardcoded to max channel bonding of dot11Mode (i.e HT80 for 11ac/HT40 for 11n)
 //  uint32 tdlsChannelBondingMode;
 
-    /* 
+    /*
      * The scheme here is to fill out a 'tDot11fProbeRequest' structure
      * and then hand it off to 'dot11fPackProbeRequest' (for
      * serialization).  We start by zero-initializing the structure:
      */
-    palZeroMemory( pMac->hHdd, ( tANI_U8* )&tdlsSetupReq, 
+    palZeroMemory( pMac->hHdd, ( tANI_U8* )&tdlsSetupReq,
                                       sizeof( tDot11fTDLSSetupReq ) );
     tdlsSetupReq.Category.category = SIR_MAC_ACTION_TDLS ;
     tdlsSetupReq.Action.action     = SIR_MAC_TDLS_SETUP_REQ ;
@@ -1244,9 +1222,9 @@
     swapBitField16(caps, ( tANI_U16* )&tdlsSetupReq.Capabilities );
 
     /* populate supported rate IE */
-    PopulateDot11fSuppRates( pMac, POPULATE_DOT11F_RATES_OPERATIONAL, 
+    PopulateDot11fSuppRates( pMac, POPULATE_DOT11F_RATES_OPERATIONAL,
                               &tdlsSetupReq.SuppRates, psessionEntry );
-   
+
     /* Populate extended supported rates */
     PopulateDot11fExtSuppRates( pMac, POPULATE_DOT11F_RATES_OPERATIONAL,
                                 &tdlsSetupReq.ExtSuppRates, psessionEntry );
@@ -1254,10 +1232,10 @@
     /* Populate extended supported rates */
     PopulateDot11fTdlsExtCapability( pMac, &tdlsSetupReq.ExtCap );
 
-   /* 
+   /*
      * TODO: we need to see if we have to support conditions where we have
      * EDCA parameter info element is needed a) if we need different QOS
-     * parameters for off channel operations or QOS is not supported on 
+     * parameters for off channel operations or QOS is not supported on
      * AP link and we wanted to QOS on direct link.
      */
     /* Populate QOS info, needed for Peer U-APSD session */
@@ -1266,11 +1244,11 @@
     tdlsSetupReq.QOSCapsStation.present = 1;
     tdlsSetupReq.QOSCapsStation.max_sp_length = 0;
     tdlsSetupReq.QOSCapsStation.qack = 0;
-    tdlsSetupReq.QOSCapsStation.acbe_uapsd = 0;
-    tdlsSetupReq.QOSCapsStation.acbk_uapsd = 0;
-    tdlsSetupReq.QOSCapsStation.acvi_uapsd = 0;
-    tdlsSetupReq.QOSCapsStation.acvo_uapsd = 0;
-    
+    tdlsSetupReq.QOSCapsStation.acbe_uapsd = ((pMac->lim.gLimTDLSUapsdMask & 0x08) >> 3) ;
+    tdlsSetupReq.QOSCapsStation.acbk_uapsd = ((pMac->lim.gLimTDLSUapsdMask & 0x04)>> 2);
+    tdlsSetupReq.QOSCapsStation.acvi_uapsd = ((pMac->lim.gLimTDLSUapsdMask & 0x02)>> 1);
+    tdlsSetupReq.QOSCapsStation.acvo_uapsd = (pMac->lim.gLimTDLSUapsdMask & 0x01);
+
 
     /*
      * we will always try to init TDLS link with 11n capabilities
@@ -1338,10 +1316,10 @@
         }
 #endif
     }
-    /* 
+    /*
      * now we pack it.  First, how much space are we going to need?
      */
-    status = dot11fGetPackedTDLSSetupReqSize( pMac, &tdlsSetupReq, 
+    status = dot11fGetPackedTDLSSetupReqSize( pMac, &tdlsSetupReq,
                                                               &nPayload);
     if ( DOT11F_FAILED( status ) )
     {
@@ -1362,7 +1340,7 @@
      * This frame is going out from PE as data frames with special ethertype
      * 89-0d.
      * 8 bytes of RFC 1042 header
-     */ 
+     */
 
 
     nBytes = nPayload + ((IS_QOS_ENABLED(psessionEntry))
@@ -1386,28 +1364,28 @@
     /* zero out the memory */
     palZeroMemory( pMac->hHdd, pFrame, nBytes );
 
-    /* 
+    /*
      * IE formation, memory allocation is completed, Now form TDLS discovery
      * request frame
      */
 
     /* fill out the buffer descriptor */
 
-    header_offset = limPrepareTdlsFrameHeader(pMac, pFrame, 
+    header_offset = limPrepareTdlsFrameHeader(pMac, pFrame,
                      LINK_IDEN_ADDR_OFFSET(tdlsSetupReq), TDLS_LINK_AP, TDLS_INITIATOR, TID_AC_BK, psessionEntry) ;
 
 #ifdef FEATURE_WLAN_TDLS_NEGATIVE
     if(pMac->lim.gLimTdlsNegativeBehavior & LIM_TDLS_NEGATIVE_WRONG_BSSID_IN_SETUP_REQ)
     {
         tdlsSetupReq.LinkIdentifier.bssid[4] = 0xde;
-        tdlsSetupReq.LinkIdentifier.bssid[5] = 0xad; 
-        VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR, 
+        tdlsSetupReq.LinkIdentifier.bssid[5] = 0xad;
+        VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR,
         ("TDLS negative running: wrong BSSID %02x:%02x:%02x:%02x:%02x:%02x in TDLS Setup Req"), \
-        tdlsSetupReq.LinkIdentifier.bssid[0], 
-        tdlsSetupReq.LinkIdentifier.bssid[1], 
-        tdlsSetupReq.LinkIdentifier.bssid[2], 
-        tdlsSetupReq.LinkIdentifier.bssid[3], 
-        tdlsSetupReq.LinkIdentifier.bssid[4], 
+        tdlsSetupReq.LinkIdentifier.bssid[0],
+        tdlsSetupReq.LinkIdentifier.bssid[1],
+        tdlsSetupReq.LinkIdentifier.bssid[2],
+        tdlsSetupReq.LinkIdentifier.bssid[3],
+        tdlsSetupReq.LinkIdentifier.bssid[4],
         tdlsSetupReq.LinkIdentifier.bssid[5]);
     }
 #endif
@@ -1415,7 +1393,7 @@
             __func__, tdlsSetupReq.VHTCaps.supportedChannelWidthSet, tdlsSetupReq.VHTCaps.rxMCSMap,
             tdlsSetupReq.VHTCaps.txMCSMap, tdlsSetupReq.VHTCaps.txSupDataRate );
 
-    status = dot11fPackTDLSSetupReq( pMac, &tdlsSetupReq, pFrame 
+    status = dot11fPackTDLSSetupReq( pMac, &tdlsSetupReq, pFrame
                                + header_offset, nPayload, &nPayload );
 
     if ( DOT11F_FAILED( status ) )
@@ -1432,7 +1410,7 @@
                                "Discovery Request (0x%08x).") );
     }
 
-    //Copy the additional IE. 
+    //Copy the additional IE.
     //TODO : addIe is added at the end of the frame. This means it doesnt
     //follow the order. This should be ok, but we should consider changing this
     //if there is any IOT issue.
@@ -1471,7 +1449,7 @@
 
 tSirRetStatus limSendTdlsTeardownFrame(tpAniSirGlobal pMac,
             tSirMacAddr peerMac, tANI_U16 reason, tANI_U8 responder, tpPESession psessionEntry,
-            tANI_U8 *addIe, tANI_U16 addIeLen) 
+            tANI_U8 *addIe, tANI_U16 addIeLen)
 {
     tDot11fTDLSTeardown teardown ;
     tANI_U32            status = 0 ;
@@ -1484,22 +1462,22 @@
 #ifndef NO_PAD_TDLS_MIN_8023_SIZE
     tANI_U32            padLen = 0;
 #endif
-    /* 
+    /*
      * The scheme here is to fill out a 'tDot11fProbeRequest' structure
      * and then hand it off to 'dot11fPackProbeRequest' (for
      * serialization).  We start by zero-initializing the structure:
      */
-    palZeroMemory( pMac->hHdd, ( tANI_U8* )&teardown, 
+    palZeroMemory( pMac->hHdd, ( tANI_U8* )&teardown,
                                       sizeof( tDot11fTDLSTeardown ) );
     teardown.Category.category = SIR_MAC_ACTION_TDLS ;
     teardown.Action.action     = SIR_MAC_TDLS_TEARDOWN ;
     teardown.Reason.code       = reason ;
 
-    PopulateDot11fLinkIden( pMac, psessionEntry, &teardown.LinkIdentifier, 
+    PopulateDot11fLinkIden( pMac, psessionEntry, &teardown.LinkIdentifier,
                                                 peerMac, (responder == TRUE) ? TDLS_RESPONDER : TDLS_INITIATOR) ;
 
 
-    /* 
+    /*
      * now we pack it.  First, how much space are we going to need?
      */
     status = dot11fGetPackedTDLSTeardownSize( pMac, &teardown, &nPayload);
@@ -1522,7 +1500,7 @@
      * This frame is going out from PE as data frames with special ethertype
      * 89-0d.
      * 8 bytes of RFC 1042 header
-     */ 
+     */
 
 
     nBytes = nPayload + ((IS_QOS_ENABLED(psessionEntry))
@@ -1563,28 +1541,28 @@
     /* zero out the memory */
     palZeroMemory( pMac->hHdd, pFrame, nBytes );
 
-    /* 
+    /*
      * IE formation, memory allocation is completed, Now form TDLS discovery
      * request frame
      */
 
     /* fill out the buffer descriptor */
 
-    header_offset = limPrepareTdlsFrameHeader(pMac, pFrame, 
-                     LINK_IDEN_ADDR_OFFSET(teardown), 
-                          (reason == eSIR_MAC_TDLS_TEARDOWN_PEER_UNREACHABLE) 
+    header_offset = limPrepareTdlsFrameHeader(pMac, pFrame,
+                     LINK_IDEN_ADDR_OFFSET(teardown),
+                          (reason == eSIR_MAC_TDLS_TEARDOWN_PEER_UNREACHABLE)
                               ? TDLS_LINK_AP : TDLS_LINK_DIRECT,
                               (responder == TRUE) ? TDLS_RESPONDER : TDLS_INITIATOR,
                               TID_AC_VI, psessionEntry) ;
 
-    status = dot11fPackTDLSTeardown( pMac, &teardown, pFrame 
+    status = dot11fPackTDLSTeardown( pMac, &teardown, pFrame
                                + header_offset, nPayload, &nPayload );
 
     if ( DOT11F_FAILED( status ) )
     {
         limLog( pMac, LOGE, FL("Failed to pack a TDLS Teardown req \
                                                (0x%08x)."), status );
-        palPktFree( pMac->hHdd, HAL_TXRX_FRM_802_11_MGMT, 
+        palPktFree( pMac->hHdd, HAL_TXRX_FRM_802_11_MGMT,
                                    ( void* ) pFrame, ( void* ) pPacket );
         return eSIR_FAILURE;
     }
@@ -1594,10 +1572,10 @@
                                "Teardown Request (0x%08x).") );
     }
 #if 0
-    if(pMac->hal.pCBackFnTxComp == NULL) 
+    if(pMac->hal.pCBackFnTxComp == NULL)
     {
         pMac->hal.pCBackFnTxComp = (tpCBackFnTxComp)limTdlsTeardownTxComplete;
-        if(TX_SUCCESS != tx_timer_activate(&pMac->hal.txCompTimer)) 
+        if(TX_SUCCESS != tx_timer_activate(&pMac->hal.txCompTimer))
         {
             status = eHAL_STATUS_FAILURE;
             return status;
@@ -1610,12 +1588,12 @@
         return status ;
     }
 #endif
- 
+
     if( addIeLen != 0 )
     {
     LIM_LOG_TDLS(VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR, ("Copy Additional Ie Len = %d"),
             addIeLen ));
-       palCopyMemory( pMac->hHdd, pFrame + header_offset + nPayload, addIe, addIeLen ); 
+       palCopyMemory( pMac->hHdd, pFrame + header_offset + nPayload, addIe, addIeLen );
     }
 
 #ifndef NO_PAD_TDLS_MIN_8023_SIZE
@@ -1646,7 +1624,7 @@
                             HAL_TXRX_FRM_802_11_DATA,
                             ANI_TXDIR_TODS,
                             TID_AC_VI,
-                            limTxComplete, pFrame, 
+                            limTxComplete, pFrame,
                             limMgmtTXComplete,
                             HAL_USE_BD_RATE2_FOR_MANAGEMENT_FRAME );
     if ( ! HAL_STATUS_SUCCESS ( halstatus ) )
@@ -1736,10 +1714,10 @@
     tdlsSetupRsp.QOSCapsStation.present = 1;
     tdlsSetupRsp.QOSCapsStation.max_sp_length = 0;
     tdlsSetupRsp.QOSCapsStation.qack = 0;
-    tdlsSetupRsp.QOSCapsStation.acbe_uapsd = 1;
-    tdlsSetupRsp.QOSCapsStation.acbk_uapsd = 1;
-    tdlsSetupRsp.QOSCapsStation.acvi_uapsd = 1;
-    tdlsSetupRsp.QOSCapsStation.acvo_uapsd = 1;
+    tdlsSetupRsp.QOSCapsStation.acbe_uapsd = ((pMac->lim.gLimTDLSUapsdMask & 0x08) >> 3);
+    tdlsSetupRsp.QOSCapsStation.acbk_uapsd = ((pMac->lim.gLimTDLSUapsdMask & 0x04) >> 2);
+    tdlsSetupRsp.QOSCapsStation.acvi_uapsd = ((pMac->lim.gLimTDLSUapsdMask & 0x02) >> 1);
+    tdlsSetupRsp.QOSCapsStation.acvo_uapsd = (pMac->lim.gLimTDLSUapsdMask & 0x01);
 
     wlan_cfgGetInt(pMac,WNI_CFG_DOT11_MODE,&selfDot11Mode);
 
@@ -5110,7 +5088,7 @@
                                         tDot11fIEExtCap *extCapability)
 {
     extCapability->TDLSPeerPSMSupp = PEER_PSM_SUPPORT ;
-    extCapability->TDLSPeerUAPSDBufferSTA = PEER_BUFFER_STA_SUPPORT ;
+    extCapability->TDLSPeerUAPSDBufferSTA = pMac->lim.gLimTDLSBufStaEnabled;
     extCapability->TDLSChannelSwitching = CH_SWITCH_SUPPORT ;
     extCapability->TDLSSupport = TDLS_SUPPORT ;
     extCapability->TDLSProhibited = TDLS_PROHIBITED ;
@@ -5315,6 +5293,38 @@
 }
 
 /*
+ * Send Response to Link Establish Request to SME
+ */
+void limSendSmeTdlsLinkEstablishReqRsp(tpAniSirGlobal pMac,
+                    tANI_U8 sessionId, tSirMacAddr peerMac, tDphHashNode   *pStaDs,
+                    tANI_U8 status)
+{
+        tSirMsgQ  mmhMsg = {0} ;
+
+        tSirTdlsLinkEstablishReqRsp *pTdlsLinkEstablishReqRsp = NULL ;
+
+        if(eHAL_STATUS_SUCCESS != palAllocateMemory(pMac->hHdd,(void * *) &pTdlsLinkEstablishReqRsp,
+                (sizeof(tSirTdlsLinkEstablishReqRsp))))
+    {
+        PELOGE(limLog(pMac, LOGE, FL("Failed to allocate memory"));)
+            return ;
+    }
+    pTdlsLinkEstablishReqRsp->statusCode = status ;
+    if( peerMac )
+        {
+            palCopyMemory(pMac->hHdd, pTdlsLinkEstablishReqRsp->peerMac, peerMac, sizeof(tSirMacAddr));
+        }
+        pTdlsLinkEstablishReqRsp->sessionId = sessionId;
+    mmhMsg.type = eWNI_SME_TDLS_LINK_ESTABLISH_RSP ;
+        mmhMsg.bodyptr = pTdlsLinkEstablishReqRsp;
+    mmhMsg.bodyval = 0;
+    limSysProcessMmhMsgApi(pMac, &mmhMsg, ePROT);
+    return ;
+
+
+}
+
+/*
  * Once link is teardown, send Del Peer Ind to SME
  */
 static eHalStatus limSendSmeTdlsDelStaRsp(tpAniSirGlobal pMac, 
@@ -5490,6 +5500,99 @@
     return eSIR_SUCCESS;
 }
 
+
+/*
+ * Process Link Establishment Request from SME .
+ */
+tSirRetStatus limProcesSmeTdlsLinkEstablishReq(tpAniSirGlobal pMac,
+                                                           tANI_U32 *pMsgBuf)
+{
+    /* get all discovery request parameters */
+    tSirTdlsLinkEstablishReq *pTdlsLinkEstablishReq = (tSirTdlsLinkEstablishReq*) pMsgBuf ;
+    tpPESession psessionEntry;
+    tANI_U8      sessionId;
+    tpTdlsLinkEstablishParams pMsgTdlsLinkEstablishReq;
+    tSirMsgQ msg;
+    tANI_U16 peerIdx = 0 ;
+    tpDphHashNode pStaDs = NULL ;
+
+    VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_INFO,
+            ("Send Mgmt Recieved\n")) ;
+
+    if((psessionEntry = peFindSessionByBssid(pMac, pTdlsLinkEstablishReq->bssid, &sessionId))
+            == NULL)
+    {
+        VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR,
+                "PE Session does not exist for given sme sessionId %d\n",
+                pTdlsLinkEstablishReq->sessionId);
+        limSendSmeTdlsLinkEstablishReqRsp(pMac, pTdlsLinkEstablishReq->sessionId, pTdlsLinkEstablishReq->peerMac,
+             NULL, eSIR_FAILURE) ;
+        return eSIR_FAILURE;
+    }
+
+    /* check if we are in proper state to work as TDLS client */
+    if (psessionEntry->limSystemRole != eLIM_STA_ROLE)
+    {
+        VOS_TRACE(VOS_MODULE_ID_PE, VOS_TRACE_LEVEL_ERROR,
+                "TDLS Link Establish Request received in wrong system Role %d\n",
+                psessionEntry->limSystemRole);
+        goto lim_tdls_link_establish_error;
+    }
+
+    /*
+     * if we are still good, go ahead and check if we are in proper state to
+     * do TDLS discovery req/rsp/....frames.
+     */
+    if ((psessionEntry->limSmeState != eLIM_SME_ASSOCIATED_STATE) &&
+            (psessionEntry->limSmeState != eLIM_SME_LINK_EST_STATE))
+    {
+
+        limLog(pMac, LOGE, "TDLS Link Establish Request received in invalid LIMsme \
+                state (%d)\n", psessionEntry->limSmeState);
+        goto lim_tdls_link_establish_error;
+    }
+    /*TODO Sunil , TDLSPeer Entry has the STA ID , Use it */
+    pStaDs = dphLookupHashEntry(pMac, pTdlsLinkEstablishReq->peerMac, &peerIdx,
+                                &psessionEntry->dph.dphHashTable) ;
+    if ( NULL == pStaDs )
+    {
+        limLog( pMac, LOGE, FL( "pStaDs is NULL \n" ));
+        goto lim_tdls_link_establish_error;
+
+    }
+    if ( eHAL_STATUS_SUCCESS != palAllocateMemory(
+                  pMac->hHdd, (void **) &pMsgTdlsLinkEstablishReq, sizeof( tTdlsLinkEstablishParams )))
+    {
+        limLog( pMac, LOGE,
+                     FL( "Unable to allocate memory TDLS Link Establish Request \n" ));
+        return eSIR_MEM_ALLOC_FAILED;
+    }
+
+    palZeroMemory( pMac->hHdd, (tANI_U8 *)pMsgTdlsLinkEstablishReq, sizeof(tpTdlsLinkEstablishParams));
+
+    pMsgTdlsLinkEstablishReq->sta_idx = pStaDs->staIndex;
+    pMsgTdlsLinkEstablishReq->is_responder = pTdlsLinkEstablishReq->isResponder;
+    pMsgTdlsLinkEstablishReq->uapsd_queues = pTdlsLinkEstablishReq->uapsdQueues;
+    pMsgTdlsLinkEstablishReq->max_sp = pTdlsLinkEstablishReq->maxSp;
+    pMsgTdlsLinkEstablishReq->is_bufsta = pTdlsLinkEstablishReq->isBufSta;
+    msg.type = WDA_SET_TDLS_LINK_ESTABLISH_REQ;
+    msg.reserved = 0;
+    msg.bodyptr = pMsgTdlsLinkEstablishReq;
+    msg.bodyval = 0;
+    if(eSIR_SUCCESS != wdaPostCtrlMsg(pMac, &msg))
+    {
+        limLog(pMac, LOGE, FL("halPostMsgApi failed\n"));
+        goto lim_tdls_link_establish_error;
+    }
+    return eSIR_SUCCESS;
+lim_tdls_link_establish_error:
+     limSendSmeTdlsLinkEstablishReqRsp(pMac, psessionEntry->smeSessionId, pTdlsLinkEstablishReq->peerMac,
+                                       NULL, eSIR_FAILURE) ;
+
+    return eSIR_SUCCESS;
+}
+
+
 /* Delete all the TDLS peer connected before leaving the BSS */
 tSirRetStatus limDeleteTDLSPeers(tpAniSirGlobal pMac, tpPESession psessionEntry)
 {
diff --git a/CORE/MAC/src/pe/lim/limSendSmeRspMessages.h b/CORE/MAC/src/pe/lim/limSendSmeRspMessages.h
index 3ef5351..bb7ac66 100644
--- a/CORE/MAC/src/pe/lim/limSendSmeRspMessages.h
+++ b/CORE/MAC/src/pe/lim/limSendSmeRspMessages.h
@@ -1,44 +1,23 @@
 /*
- * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-/*
- * Copyright (c) 2012, The Linux Foundation. All rights reserved.
- *
- * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
- *
- *
- * 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.
- */
-
+  * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
+  *
+  * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
+  *
+  *
+  * 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.
+*/
 /*
  * Airgo Networks, Inc proprietary. All rights reserved.
  * This file limSendSmeRspMessages.h contains the definitions for
@@ -124,6 +103,9 @@
 void limSendSmeTdlsDisRsp(tpAniSirGlobal pMac, tSirResultCodes statusCode, tANI_U16 msgType);
 void limSendSmeTdlsLinkStartRsp(tpAniSirGlobal pMac, tSirResultCodes statusCode, tSirMacAddr peerMac, tANI_U16 msgType);
 void limSendSmeTdlsTeardownRsp(tpAniSirGlobal pMac, tSirResultCodes statusCode, tSirMacAddr peerMac, tANI_U16 msgType);
+void limSendSmeTdlsLinkEstablishReqRsp(tpAniSirGlobal pMac,
+                                       tANI_U8 sessionId, tSirMacAddr peerMac, tDphHashNode   *pStaDs,
+                                       tANI_U8 status);
 #endif
 
 #endif /* __LIM_SEND_SME_RSP_H */
diff --git a/CORE/MAC/src/pe/lim/limTypes.h b/CORE/MAC/src/pe/lim/limTypes.h
index 00bff88..8f86cf9 100644
--- a/CORE/MAC/src/pe/lim/limTypes.h
+++ b/CORE/MAC/src/pe/lim/limTypes.h
@@ -739,6 +739,8 @@
                                                            tANI_U32 *pMsgBuf);
 tSirRetStatus limProcessSmeTdlsAddStaReq(tpAniSirGlobal pMac, 
                                                            tANI_U32 *pMsgBuf);
+tSirRetStatus limProcesSmeTdlsLinkEstablishReq(tpAniSirGlobal pMac,
+                                                           tANI_U32 *pMsgBuf);
 tSirRetStatus limProcessSmeTdlsDelStaReq(tpAniSirGlobal pMac, 
                                                            tANI_U32 *pMsgBuf);
 void limSendSmeTDLSDeleteAllPeerInd(tpAniSirGlobal pMac, tpPESession psessionEntry);