diff --git a/CORE/HDD/inc/wlan_hdd_main.h b/CORE/HDD/inc/wlan_hdd_main.h
index 546a9e6..12f7ce9 100644
--- a/CORE/HDD/inc/wlan_hdd_main.h
+++ b/CORE/HDD/inc/wlan_hdd_main.h
@@ -73,9 +73,7 @@
 #ifdef WLAN_OPEN_SOURCE
 #include <linux/wakelock.h>
 #endif
-#ifdef ANI_MANF_DIAG
 #include <wlan_hdd_ftm.h>
-#endif
 #ifdef FEATURE_WLAN_TDLS
 #include "wlan_hdd_tdls.h"
 #endif
@@ -398,10 +396,8 @@
    WLAN_HDD_SOFTAP,
    WLAN_HDD_P2P_CLIENT,
    WLAN_HDD_P2P_GO,
-   WLAN_HDD_MONITOR
-#ifdef ANI_MANF_DIAG
-   ,WLAN_HDD_FTM,
-#endif
+   WLAN_HDD_MONITOR,
+   WLAN_HDD_FTM,
    WLAN_HDD_P2P_DEVICE
 }device_mode_t;
 
@@ -856,9 +852,7 @@
 
    /** Config values read from qcom_cfg.ini file */ 
    hdd_config_t *cfg_ini;
-  #ifdef ANI_MANF_DIAG
    wlan_hdd_ftm_status_t ftm; 
-  #endif
    /** completion variable for full power callback */
    struct completion full_pwr_comp_var;
    /** completion variable for Request BMPS callback */
diff --git a/CORE/HDD/src/wlan_hdd_ftm.c b/CORE/HDD/src/wlan_hdd_ftm.c
index 104062d..49be302 100644
--- a/CORE/HDD/src/wlan_hdd_ftm.c
+++ b/CORE/HDD/src/wlan_hdd_ftm.c
@@ -94,7 +94,6 @@
 #include "pttMsgApi.h"
 #include "wlan_qct_pal_device.h"
 
-#ifdef ANI_MANF_DIAG
 #define RXMODE_DISABLE_ALL 0
 #define RXMODE_ENABLE_ALL  1
 #define RXMODE_ENABLE_11GN 2
@@ -4157,11 +4156,10 @@
 
     return 0;
 }
-#endif//ANI_MANF_DIAG
 
 VOS_STATUS wlan_write_to_efs (v_U8_t *pData, v_U16_t data_len)
 {
-#if defined(ANI_MANF_DIAG) && defined(MSM_PLATFORM)
+#if defined(MSM_PLATFORM)
     tAniHdr *wmsg = NULL;
     v_U8_t *pBuf;
     hdd_context_t *pHddCtx = NULL;
@@ -4216,7 +4214,6 @@
     return VOS_STATUS_SUCCESS;
 }
 
-#ifdef ANI_MANF_DIAG
 /*  action sub-ioctls */
 static int iw_ftm_setnone_getnone(struct net_device *dev, struct iw_request_info *info,
                        union iwreq_data *wrqu, char *extra)
@@ -4478,11 +4475,9 @@
     return 0;
 }
 
-#endif //ANI_MANF_DIAG
 
 VOS_STATUS WLANFTM_McProcessMsg (v_VOID_t *message)
 {
-#ifdef ANI_MANF_DIAG
     ftm_rsp_msg_t   *pFtmMsgRsp;
 
     VOS_STATUS vos_status = VOS_STATUS_SUCCESS;
@@ -4535,7 +4530,6 @@
     }
     }
     EXIT();
-#endif
     return VOS_STATUS_SUCCESS;
 
 }
diff --git a/CORE/HDD/src/wlan_hdd_main.c b/CORE/HDD/src/wlan_hdd_main.c
index 97eb29b..383e555 100644
--- a/CORE/HDD/src/wlan_hdd_main.c
+++ b/CORE/HDD/src/wlan_hdd_main.c
@@ -108,9 +108,7 @@
 #include "wlan_hdd_p2p.h"
 #endif
 #include <linux/rtnetlink.h>
-#ifdef ANI_MANF_DIAG
 int wlan_hdd_ftm_start(hdd_context_t *pAdapter);
-#endif
 #include "sapApi.h"
 #include <linux/semaphore.h>
 #include <mach/subsystem_restart.h>
@@ -2326,7 +2324,6 @@
 #endif
       }
          break;
-#ifdef ANI_MANF_DIAG
       case WLAN_HDD_FTM:
       {
          pAdapter = hdd_alloc_station_adapter( pHddCtx, macAddr, iface_name );
@@ -2340,7 +2337,6 @@
          status = hdd_register_interface( pAdapter, rtnl_held );
       }
          break;
-#endif
       default:
       {
          VOS_ASSERT(0);
@@ -3286,20 +3282,16 @@
 
    ENTER();
 
-#ifdef ANI_MANF_DIAG
-      if (VOS_FTM_MODE != hdd_get_conparam())
-#endif /* ANI_MANF_DIAG */
-      {
-         // Unloading, restart logic is no more required.
-         wlan_hdd_restart_deinit(pHddCtx);
-      }
+   if (VOS_FTM_MODE != hdd_get_conparam())
+   {
+      // Unloading, restart logic is no more required.
+      wlan_hdd_restart_deinit(pHddCtx);
+   }
 
 #ifdef CONFIG_CFG80211
    if (VOS_STA_SAP_MODE != hdd_get_conparam())
    {
-#ifdef ANI_MANF_DIAG
       if (VOS_FTM_MODE != hdd_get_conparam())
-#endif /* ANI_MANF_DIAG */
       {
          hdd_adapter_t* pAdapter = hdd_get_adapter(pHddCtx,
                                       WLAN_HDD_INFRA_STATION);
@@ -3315,13 +3307,11 @@
    }
 #endif
 
-#ifdef ANI_MANF_DIAG
    if (VOS_FTM_MODE == hdd_get_conparam())
-  {
-    wlan_hdd_ftm_close(pHddCtx);
-    goto free_hdd_ctx;
-  }
-#endif  
+   {
+      wlan_hdd_ftm_close(pHddCtx);
+      goto free_hdd_ctx;
+   }
    //Stop the Interface TX queue.
    //netif_tx_disable(pWlanDev);
    //netif_carrier_off(pWlanDev);
@@ -3333,9 +3323,7 @@
    }
    else
    {
-#ifdef ANI_MANF_DIAG
       if (VOS_FTM_MODE != hdd_get_conparam())
-#endif /* ANI_MANF_DIAG */
       {
          pAdapter = hdd_get_adapter(pHddCtx,
                                     WLAN_HDD_INFRA_STATION);
@@ -3514,11 +3502,9 @@
                                            __func__);
    }
 
-#ifdef ANI_MANF_DIAG
-free_hdd_ctx:   
-#endif
+free_hdd_ctx:
 #ifdef CONFIG_CFG80211
-   wiphy_unregister(wiphy) ; 
+   wiphy_unregister(wiphy) ;
    wiphy_free(wiphy) ;
 #else
    vos_mem_free( pHddCtx );
@@ -3955,9 +3941,8 @@
    hdd_wdi_trace_enable(eWLAN_MODULE_PAL,
                         pHddCtx->cfg_ini->wdiTraceEnablePAL);
 
-#ifdef ANI_MANF_DIAG 
-   if(VOS_FTM_MODE == hdd_get_conparam())
-  {
+   if (VOS_FTM_MODE == hdd_get_conparam())
+   {
       if ( VOS_STATUS_SUCCESS != wlan_hdd_ftm_open(pHddCtx) )
       {
           hddLog(VOS_TRACE_LEVEL_FATAL,"%s: wlan_hdd_ftm_open Failed",__func__);
@@ -3965,10 +3950,9 @@
       }
       hddLog(VOS_TRACE_LEVEL_FATAL,"%s: FTM driver loaded success fully",__func__);
       return VOS_STATUS_SUCCESS;
-  }
-#endif
+   }
 
-    //Open watchdog module
+   //Open watchdog module
    if(pHddCtx->cfg_ini->fIsLogpEnabled)
    {
       status = vos_watchdog_open(pVosContext,
