diff --git a/CORE/TL/src/wlan_qct_tl.c b/CORE/TL/src/wlan_qct_tl.c
index fb28efb..7efbd36 100644
--- a/CORE/TL/src/wlan_qct_tl.c
+++ b/CORE/TL/src/wlan_qct_tl.c
@@ -2112,15 +2112,9 @@
   if (( 0 == pMetaInfo->ucDisableFrmXtl ) &&
       ( 0 != pTLCb->atlSTAClients[ucStaId].wSTADesc.ucSwFrameTXXlation ))
   {
-#ifdef FEATURE_WLAN_TDLS
     vosStatus =  WLANTL_Translate8023To80211Header( vosDataBuff, &vosStatus,
                                                     pTLCb, &ucStaId,
                                                     pMetaInfo->ucUP, &ucWDSEnabled, &extraHeadSpace);
-#else
-    vosStatus = WLANTL_Translate8023To80211Header(vosDataBuff, &vosStatus,
-                                                  pTLCb, ucStaId,
-                                                  pMetaInfo->ucUP, &ucWDSEnabled, &extraHeadSpace);
-#endif
 
     if ( VOS_STATUS_SUCCESS != vosStatus )
     {
@@ -6005,15 +5999,9 @@
       ( 0 != pTLCb->atlSTAClients[ucSTAId].wSTADesc.ucSwFrameTXXlation) )
 #endif //#ifdef FEATURE_WLAN_WAPI
   {
-#ifdef FEATURE_WLAN_TDLS
     vosStatus =  WLANTL_Translate8023To80211Header( vosDataBuff, &vosStatus,
                                                     pTLCb, &ucSTAId,
                                                     tlMetaInfo.ucUP, &ucWDSEnabled, &extraHeadSpace);
-#else
-    vosStatus =  WLANTL_Translate8023To80211Header( vosDataBuff, &vosStatus,
-                                                    pTLCb, ucSTAId,
-                                                    tlMetaInfo.ucUP, &ucWDSEnabled, &extraHeadSpace);
-#endif
     if ( VOS_STATUS_SUCCESS != vosStatus )
     {
       TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
@@ -6397,15 +6385,9 @@
        gUcIsWai = tlMetaInfo.ucIsWai,
 #endif
 
-#ifdef FEATURE_WLAN_TDLS
        vosStatus =  WLANTL_Translate8023To80211Header( vosDataBuff, &vosStatus,
                                                     pTLCb, &ucSTAId,
                                                     tlMetaInfo.ucUP, &ucWDSEnabled, &extraHeadSpace);
-#else
-       vosStatus = WLANTL_Translate8023To80211Header( vosDataBuff, &vosStatus,
-                                                   pTLCb, ucSTAId,
-                                                   tlMetaInfo.ucUP, &ucWDSEnabled, &extraHeadSpace);
-#endif
        if ( VOS_STATUS_SUCCESS != vosStatus )
        {
           TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
@@ -8119,7 +8101,9 @@
 
    IN
     pTLCb:            TL control block
-    ucStaId:          station ID
+   IN/OUT 
+    ucStaId:          station ID. Incase of TDLS, this returns actual TDLS
+                      station ID used
 
    IN/OUT
     vosDataBuff:      vos data buffer, will contain the new header on output
@@ -8137,7 +8121,6 @@
   SIDE EFFECTS
 
 ============================================================================*/
-#ifdef FEATURE_WLAN_TDLS
 VOS_STATUS
 WLANTL_Translate8023To80211Header
 (
@@ -8149,19 +8132,6 @@
   v_U8_t          *ucWDSEnabled,
   v_U8_t          *extraHeadSpace
 )
-#else
-VOS_STATUS
-WLANTL_Translate8023To80211Header
-(
-  vos_pkt_t*      vosDataBuff,
-  VOS_STATUS*     pvosStatus,
-  WLANTL_CbType*  pTLCb,
-  v_U8_t          ucStaId,
-  v_U8_t          ucUP,
-  v_U8_t          *ucWDSEnabled,
-  v_U8_t          *extraHeadSpace
-)
-#endif
 {
   WLANTL_8023HeaderType  w8023Header;
   WLANTL_80211HeaderType *pw80211Header; // Allocate an aligned BD and then fill it. 
@@ -8172,9 +8142,7 @@
 #ifdef WLAN_SOFTAP_FEATURE
   v_U8_t                 ucQoSOffset = WLAN80211_MANDATORY_HEADER_SIZE;
 #endif
-#ifdef FEATURE_WLAN_TDLS
   v_U8_t                 ucStaId;
-#endif
 
   *ucWDSEnabled = 0; // default WDS off.
   vosStatus = vos_pkt_pop_head( vosDataBuff, &w8023Header,
@@ -8187,7 +8155,6 @@
      return vosStatus;
   }
 
-#ifdef FEATURE_WLAN_TDLS
   if( NULL == pucStaId )
   {
      TLLOGE(VOS_TRACE( VOS_MODULE_ID_TL, VOS_TRACE_LEVEL_ERROR,
@@ -8196,6 +8163,8 @@
   }
   ucStaId = *pucStaId;
 
+#ifdef FEATURE_WLAN_TDLS
+
   if( WLAN_STA_INFRA == pTLCb->atlSTAClients[ucStaId].wSTADesc.wSTAType )
   {
     v_U8_t ucIndex = 0;
diff --git a/CORE/TL/src/wlan_qct_tli.h b/CORE/TL/src/wlan_qct_tli.h
index 078748e..79ebf06 100644
--- a/CORE/TL/src/wlan_qct_tli.h
+++ b/CORE/TL/src/wlan_qct_tli.h
@@ -1262,11 +1262,9 @@
 
    IN
     pTLCb:            TL control block
-#ifdef FEATURE_WLAN_TDLS
-    *pucStaId         Returns the staId used in case of TDLS
-#else
-    ucStaId:          station ID
-#endif
+
+    *pucStaId         Station ID. In case of TDLS, this return the actual
+                      station index used to transmit.
 
    IN/OUT
     vosDataBuff:      vos data buffer, will contain the new header on output
@@ -1280,7 +1278,6 @@
   SIDE EFFECTS
 
 ============================================================================*/
-#ifdef FEATURE_WLAN_TDLS
 VOS_STATUS
 WLANTL_Translate8023To80211Header
 (
@@ -1292,19 +1289,6 @@
   v_U8_t          *ucWDSEnabled,
   v_U8_t          *extraHeadSpace
 );
-#else
-VOS_STATUS
-WLANTL_Translate8023To80211Header
-(
-  vos_pkt_t*      vosDataBuff,
-  VOS_STATUS*     pvosStatus,
-  WLANTL_CbType*  pTLCb,
-  v_U8_t          ucStaId,
-  v_U8_t          ucUP,
-  v_U8_t          *ucWDSEnabled,
-  v_U8_t          *extraHeadSpace
-);
-#endif
 /*==========================================================================
   FUNCTION    WLANTL_Translate80211To8023Header
 
