diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c
index cc9bf9b..490a5e4 100644
--- a/CORE/MAC/src/pe/lim/limApi.c
+++ b/CORE/MAC/src/pe/lim/limApi.c
@@ -82,13 +82,10 @@
 #endif
 
 #include <limFT.h>
-
-#ifdef VOSS_ENABLED
 #include "vos_types.h"
 #include "vos_packet.h"
 #include "wlan_qct_tl.h"
 #include "sysStartup.h"
-#endif
 
 
 static void __limInitScanVars(tpAniSirGlobal pMac)
@@ -110,7 +107,7 @@
     pMac->lim.gLimBackgroundScanDisable = false;      //based on BG timer
     pMac->lim.gLimForceBackgroundScanDisable = false; //debug control flag
     pMac->lim.gLimBackgroundScanTerminate = TRUE;    //controlled by SME
-    pMac->lim.gLimReportBackgroundScanResults = FALSE;    //controlled by SME    
+    pMac->lim.gLimReportBackgroundScanResults = FALSE;    //controlled by SME
 
     pMac->lim.gLimCurrentScanChannelId = 0;
     pMac->lim.gpLimMlmScanReq = NULL;
@@ -793,10 +790,8 @@
 void
 limCleanup(tpAniSirGlobal pMac)
 {
-#ifdef VOSS_ENABLED
     v_PVOID_t pvosGCTx;
     VOS_STATUS retStatus;
-#endif
 
 //Before destroying the list making sure all the nodes have been deleted.
 //Which should be the normal case, but a memory leak has been reported.
@@ -923,14 +918,12 @@
     // Now, finally reset the deferred message queue pointers
     limResetDeferredMsgQ(pMac);
 
-#ifdef VOSS_ENABLED
 
     pvosGCTx = vos_get_global_context(VOS_MODULE_ID_PE, (v_VOID_t *) pMac);
     retStatus = WLANTL_DeRegisterMgmtFrmClient(pvosGCTx);
 
     if ( retStatus != VOS_STATUS_SUCCESS )
         PELOGE(limLog(pMac, LOGE, FL("DeRegistering the PE Handle with TL has failed bailing out...\n"));)
-#endif
 
 #if defined WLAN_FEATURE_VOWIFI
     rrmCleanup(pMac);
@@ -1231,33 +1224,9 @@
 tANI_U32
 limPostMsgApi(tpAniSirGlobal pMac, tSirMsgQ *pMsg)
 {
-#ifdef VOSS_ENABLED
     return  vos_mq_post_message(VOS_MQ_ID_PE, (vos_msg_t *) pMsg);
 
 
-#elif defined(ANI_OS_TYPE_LINUX) || defined(ANI_OS_TYPE_OSX)
-    return tx_queue_send(&pMac->sys.gSirLimMsgQ, pMsg, TX_WAIT_FOREVER);
-
-#else
-    /* Check if this is a timeout message from a timer
-     * and if the timeout message is allowed if the device is in power-save state
-     */
-    if(!limIsTimerAllowedInPowerSaveState(pMac, pMsg))
-    {
-        limLog(pMac, LOGW,
-                FL("Timeout message %d is not allowed while device is in Power-Save mode\n"),
-                pMsg->type);
-
-        return TX_SUCCESS;
-    }
-    if(pMac->gDriverType != eDRIVER_TYPE_MFG)
-    {
-        limMessageProcessor(pMac, pMsg);
-    }
-
-    return TX_SUCCESS;
-
-#endif
 } /*** end limPostMsgApi() ***/
 
 
@@ -1312,7 +1281,6 @@
 }
 
 
-#ifdef VOSS_ENABLED
 
 // ---------------------------------------------------------------------------
 /**
@@ -1429,7 +1397,6 @@
         limLog( pMac, LOGP, FL("Registering the PE Handle with TL has failed bailing out...\n"));
 
 }
-#endif
 
 
 /**
