diff --git a/Kbuild b/Kbuild
index 36742bb..0156acb 100644
--- a/Kbuild
+++ b/Kbuild
@@ -888,12 +888,16 @@
 ######## COMMON MLME ##############
 UMAC_MLME_INC := -I$(WLAN_COMMON_INC)/umac/mlme \
 		-I$(WLAN_COMMON_INC)/umac/mlme/mlme_objmgr/dispatcher/inc \
-		-I$(WLAN_COMMON_INC)/umac/mlme/vdev_mgr/dispatcher/inc
+		-I$(WLAN_COMMON_INC)/umac/mlme/vdev_mgr/dispatcher/inc \
+		-I$(WLAN_COMMON_INC)/umac/mlme/pdev_mgr/dispatcher/inc
 
 ifeq ($(CONFIG_CMN_VDEV_MLME_SM), y)
 UMAC_MLME_OBJS := $(WLAN_COMMON_ROOT)/umac/mlme/mlme_objmgr/dispatcher/src/wlan_vdev_mlme_main.o \
 		$(WLAN_COMMON_ROOT)/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.o \
-		$(WLAN_COMMON_ROOT)/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mlme_api.o
+		$(WLAN_COMMON_ROOT)/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mlme_api.o \
+		$(WLAN_COMMON_ROOT)/umac/mlme/mlme_objmgr/dispatcher/src/wlan_cmn_mlme_main.o \
+		$(WLAN_COMMON_ROOT)/umac/mlme/mlme_objmgr/dispatcher/src/wlan_pdev_mlme_main.o \
+		$(WLAN_COMMON_ROOT)/umac/mlme/pdev_mgr/dispatcher/src/wlan_pdev_mlme_api.o
 endif
 
 ######## MLME ##############
diff --git a/components/mlme/core/inc/wlan_mlme_vdev_mgr_interface.h b/components/mlme/core/inc/wlan_mlme_vdev_mgr_interface.h
index 90e7d34..a48f39c 100644
--- a/components/mlme/core/inc/wlan_mlme_vdev_mgr_interface.h
+++ b/components/mlme/core/inc/wlan_mlme_vdev_mgr_interface.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2018-2019 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
@@ -28,6 +28,14 @@
 #include "wlan_mlme_main.h"
 
 /**
+ * mlme_register_mlme_ext_ops() - Register mlme ext ops
+ *
+ * This function is called to register mlme ext operations
+ *
+ * Return: QDF_STATUS
+ */
+QDF_STATUS mlme_register_mlme_ext_ops(void);
+/**
  * mlme_register_vdev_mgr_ops() - Register vdev mgr ops
  * @vdev_mlme: vdev mlme object
  *
@@ -35,7 +43,7 @@
  *
  * Return: QDF_STATUS
  */
-QDF_STATUS mlme_register_vdev_mgr_ops(void *mlme);
+QDF_STATUS mlme_register_vdev_mgr_ops(struct vdev_mlme_obj *vdev_mlme);
 /**
  * mlme_unregister_vdev_mgr_ops() - Unregister vdev mgr ops
  * @vdev_mlme: vdev mlme object
@@ -148,6 +156,5 @@
  * Return: associate type
  */
 enum vdev_assoc_type  mlme_get_assoc_type(struct wlan_objmgr_vdev *vdev);
-
 #endif
 #endif
diff --git a/components/mlme/core/src/wlan_mlme_vdev_mgr_interface.c b/components/mlme/core/src/wlan_mlme_vdev_mgr_interface.c
index f7adea2..150f2c6 100644
--- a/components/mlme/core/src/wlan_mlme_vdev_mgr_interface.c
+++ b/components/mlme/core/src/wlan_mlme_vdev_mgr_interface.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2018-2019 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
@@ -23,9 +23,11 @@
 #include "lim_utils.h"
 #include "wma_api.h"
 #include "lim_types.h"
+#include <include/wlan_mlme_cmn.h>
 
 static struct vdev_mlme_ops sta_mlme_ops;
 static struct vdev_mlme_ops ap_mlme_ops;
+static struct mlme_ext_ops ext_ops;
 
 bool mlme_is_vdev_in_beaconning_mode(enum QDF_OPMODE vdev_opmode)
 {
@@ -41,6 +43,22 @@
 }
 
 /**
+ * mlme_get_global_ops() - Register ext global ops
+ *
+ * Return: ext_ops global ops
+ */
+static struct mlme_ext_ops *mlme_get_global_ops(void)
+{
+	return &ext_ops;
+}
+
+QDF_STATUS mlme_register_mlme_ext_ops(void)
+{
+	mlme_set_ops_register_cb(mlme_get_global_ops);
+	return QDF_STATUS_SUCCESS;
+}
+
+/**
  * mlme_register_vdev_mgr_ops() - Register vdev mgr ops
  * @vdev_mlme: vdev mlme object
  *
@@ -48,10 +66,9 @@
  *
  * Return: QDF_STATUS
  */
-QDF_STATUS mlme_register_vdev_mgr_ops(void *mlme)
+QDF_STATUS mlme_register_vdev_mgr_ops(struct vdev_mlme_obj *vdev_mlme)
 {
 	struct wlan_objmgr_vdev *vdev;
-	struct vdev_mlme_obj *vdev_mlme = (struct vdev_mlme_obj *)mlme;
 
 	vdev = vdev_mlme->vdev;
 
@@ -690,10 +707,6 @@
  *                                      MLME down operation
  * @mlme_vdev_notify_down_complete:     callback to notify VDEV MLME on moving
  *                                      to INIT state
- * @mlme_vdev_ext_hdl_create:           callback to invoke creation of legacy
- *                                      vdev object
- * @mlme_vdev_ext_hdl_destroy:          callback to invoke destroy of legacy
- *                                      vdev object
  */
 static struct vdev_mlme_ops sta_mlme_ops = {
 	.mlme_vdev_start_send = sta_mlme_vdev_start_send,
@@ -707,8 +720,6 @@
 	.mlme_vdev_stop_continue = vdevmgr_mlme_stop_continue,
 	.mlme_vdev_down_send = vdevmgr_mlme_vdev_down_send,
 	.mlme_vdev_notify_down_complete = vdevmgr_notify_down_complete,
-	.mlme_vdev_ext_hdl_create = vdevmgr_mlme_ext_hdl_create,
-	.mlme_vdev_ext_hdl_destroy = vdevmgr_mlme_ext_hdl_destroy,
 };
 
 /**
@@ -738,10 +749,6 @@
  *                                      MLME down operation
  * @mlme_vdev_notify_down_complete:     callback to notify VDEV MLME on moving
  *                                      to INIT state
- * @mlme_vdev_ext_hdl_create:           callback to invoke creation of legacy
- *                                      vdev object
- * @mlme_vdev_ext_hdl_destroy:          callback to invoke destroy of legacy
- *                                      vdev object
  */
 static struct vdev_mlme_ops ap_mlme_ops = {
 	.mlme_vdev_start_send = ap_mlme_vdev_start_send,
@@ -758,6 +765,16 @@
 	.mlme_vdev_stop_continue = vdevmgr_mlme_stop_continue,
 	.mlme_vdev_down_send = vdevmgr_mlme_vdev_down_send,
 	.mlme_vdev_notify_down_complete = vdevmgr_notify_down_complete,
+};
+
+/**
+ * struct mlme_ext_ops - VDEV MLME legacy global callbacks structure
+ * @mlme_vdev_ext_hdl_create:           callback to invoke creation of legacy
+ *                                      vdev object
+ * @mlme_vdev_ext_hdl_destroy:          callback to invoke destroy of legacy
+ *                                      vdev object
+ */
+static struct mlme_ext_ops ext_ops = {
 	.mlme_vdev_ext_hdl_create = vdevmgr_mlme_ext_hdl_create,
 	.mlme_vdev_ext_hdl_destroy = vdevmgr_mlme_ext_hdl_destroy,
 };
diff --git a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h b/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h
index 6ef41bd..0dd47fb 100644
--- a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h
+++ b/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h
@@ -89,6 +89,18 @@
  */
 QDF_STATUS ucfg_mlme_pdev_close(struct wlan_objmgr_pdev *pdev);
 
+/**
+ * ucfg_mlme_global_init() - initialize global mlme ops and structure
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS ucfg_mlme_global_init(void);
+/**
+ * ucfg_mlme_global_deinit() - deinitialize global mlme ops and structure
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS ucfg_mlme_global_deinit(void);
 #else
 /**
  * ucfg_mlme_pdev_open() - MLME component pdev Open
@@ -115,6 +127,26 @@
 {
 	return QDF_STATUS_SUCCESS;
 }
+
+/**
+ * ucfg_mlme_global_init() - initialize global mlme ops and structure
+ *
+ * Return: QDF Status
+ */
+static inline QDF_STATUS ucfg_mlme_global_init(void)
+{
+	return QDF_STATUS_SUCCESS;
+}
+
+/**
+ * ucfg_mlme_global_deinit() - deinitialize global mlme ops and structure
+ *
+ * Return: QDF Status
+ */
+static inline QDF_STATUS ucfg_mlme_global_deinit(void)
+{
+	return QDF_STATUS_SUCCESS;
+}
 #endif
 
 /**
diff --git a/components/mlme/dispatcher/src/wlan_mlme_ucfg_api.c b/components/mlme/dispatcher/src/wlan_mlme_ucfg_api.c
index a961fc0..1c8459f 100644
--- a/components/mlme/dispatcher/src/wlan_mlme_ucfg_api.c
+++ b/components/mlme/dispatcher/src/wlan_mlme_ucfg_api.c
@@ -26,6 +26,10 @@
 #include "wlan_mlme_ucfg_api.h"
 #include "wlan_objmgr_pdev_obj.h"
 #include "wlan_mlme_vdev_mgr_interface.h"
+#ifdef CONFIG_VDEV_SM
+#include <include/wlan_pdev_mlme.h>
+#include "wlan_pdev_mlme_api.h"
+#endif
 
 #ifdef CONFIG_VDEV_SM
 static QDF_STATUS ucfg_mlme_vdev_init(void)
@@ -38,6 +42,18 @@
 	return QDF_STATUS_SUCCESS;
 }
 
+QDF_STATUS ucfg_mlme_global_init(void)
+{
+	mlme_register_mlme_ext_ops();
+
+	return QDF_STATUS_SUCCESS;
+}
+
+QDF_STATUS ucfg_mlme_global_deinit(void)
+{
+	return QDF_STATUS_SUCCESS;
+}
+
 #else
 static QDF_STATUS ucfg_mlme_vdev_init(void)
 {
@@ -159,7 +175,14 @@
 #ifdef CONFIG_VDEV_SM
 QDF_STATUS ucfg_mlme_pdev_open(struct wlan_objmgr_pdev *pdev)
 {
-	pdev->pdev_mlme.mlme_register_ops = mlme_register_vdev_mgr_ops;
+	struct pdev_mlme_obj *pdev_mlme;
+
+	pdev_mlme = wlan_pdev_mlme_get_cmpt_obj(pdev);
+	if (!pdev_mlme) {
+		mlme_err(" PDEV MLME is NULL");
+		return QDF_STATUS_E_FAILURE;
+	}
+	pdev_mlme->mlme_register_ops = mlme_register_vdev_mgr_ops;
 
 	return QDF_STATUS_SUCCESS;
 }
diff --git a/components/pmo/core/src/wlan_pmo_wow.c b/components/pmo/core/src/wlan_pmo_wow.c
index bb2089b..4abe6e2 100644
--- a/components/pmo/core/src/wlan_pmo_wow.c
+++ b/components/pmo/core/src/wlan_pmo_wow.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2017-2019 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
@@ -269,7 +269,7 @@
 
 		vdev_opmode = pmo_get_vdev_opmode(vdev);
 		is_beaconing = pmo_is_vdev_in_beaconning_mode(vdev_opmode) &&
-			       wlan_vdev_is_up(vdev);
+			       QDF_IS_STATUS_SUCCESS(wlan_vdev_is_up(vdev));
 
 		pmo_vdev_put_ref(vdev);
 
diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c
index 375012c..5b3533b7 100644
--- a/core/hdd/src/wlan_hdd_main.c
+++ b/core/hdd/src/wlan_hdd_main.c
@@ -13118,10 +13118,14 @@
 	if (QDF_IS_STATUS_ERROR(status))
 		return status;
 
-	status = dispatcher_init();
+	status = ucfg_mlme_global_init();
 	if (QDF_IS_STATUS_ERROR(status))
 		goto target_if_deinit;
 
+	status = dispatcher_init();
+	if (QDF_IS_STATUS_ERROR(status))
+		goto mlme_global_deinit;
+
 	/* initialize non-converged components */
 	status = ucfg_mlme_init();
 	if (QDF_IS_STATUS_ERROR(status))
@@ -13191,6 +13195,8 @@
 	ucfg_mlme_deinit();
 dispatcher_deinit:
 	dispatcher_deinit();
+mlme_global_deinit:
+	ucfg_mlme_global_deinit();
 target_if_deinit:
 	target_if_deinit();
 
@@ -13219,6 +13225,7 @@
 
 	/* deinitialize converged components */
 	dispatcher_deinit();
+	ucfg_mlme_global_deinit();
 	target_if_deinit();
 }
 
diff --git a/core/mac/src/pe/lim/lim_process_sme_req_messages.c b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
index 69a88d7..5ec0e28 100644
--- a/core/mac/src/pe/lim/lim_process_sme_req_messages.c
+++ b/core/mac/src/pe/lim/lim_process_sme_req_messages.c
@@ -2991,8 +2991,8 @@
 	struct mac_context *mac_ctx = session->mac_ctx;
 	QDF_STATUS status;
 
-	if (wlan_vdev_mlme_get_substate(session->vdev) ==
-	    WLAN_VDEV_SS_START_RESTART_PROGRESS)
+	if (QDF_IS_STATUS_SUCCESS(
+	    wlan_vdev_is_restart_progress(session->vdev)))
 		status =
 		 wlan_vdev_mlme_sm_deliver_evt(session->vdev,
 					       WLAN_VDEV_SM_EV_RESTART_REQ_FAIL,
@@ -4750,8 +4750,8 @@
 static void lim_process_disconnect_sta(struct pe_session *session,
 				       struct scheduler_msg *msg)
 {
-	if (wlan_vdev_mlme_get_substate(session->vdev) ==
-	    WLAN_VDEV_SS_START_RESTART_PROGRESS)
+	if (QDF_IS_STATUS_SUCCESS(
+	    wlan_vdev_is_restart_progress(session->vdev)))
 		wlan_vdev_mlme_sm_deliver_evt(session->vdev,
 					      WLAN_VDEV_SM_EV_RESTART_REQ_FAIL,
 					      sizeof(*msg), msg);
diff --git a/core/sap/src/sap_fsm.c b/core/sap/src/sap_fsm.c
index 946d4dd..575ccbb 100644
--- a/core/sap/src/sap_fsm.c
+++ b/core/sap/src/sap_fsm.c
@@ -2327,10 +2327,9 @@
 	QDF_STATUS qdf_status = QDF_STATUS_E_FAILURE;
 
 	if (msg == eSAP_HDD_STOP_INFRA_BSS &&
-	    ((wlan_vdev_mlme_get_state(sap_ctx->vdev) ==
-	      WLAN_VDEV_S_DFS_CAC_WAIT) ||
-	     (wlan_vdev_mlme_get_substate(sap_ctx->vdev) ==
-	      WLAN_VDEV_SS_START_RESTART_PROGRESS))) {
+	    (QDF_IS_STATUS_SUCCESS(wlan_vdev_is_dfs_cac_wait(sap_ctx->vdev)) ||
+	     QDF_IS_STATUS_SUCCESS(
+	     wlan_vdev_is_restart_progress(sap_ctx->vdev)))) {
 		/* Transition from SAP_STARTING to SAP_STOPPING */
 		QDF_TRACE(QDF_MODULE_ID_SAP, QDF_TRACE_LEVEL_INFO_HIGH,
 			  FL("In cac wait state from state %s => %s"),
diff --git a/core/sap/src/sap_internal.h b/core/sap/src/sap_internal.h
index 2ee897a..5553abb 100644
--- a/core/sap/src/sap_internal.h
+++ b/core/sap/src/sap_internal.h
@@ -468,8 +468,7 @@
 	if (!sap_ctx)
 		return false;
 
-	return (wlan_vdev_mlme_get_state(sap_ctx->vdev) ==
-		WLAN_VDEV_S_DFS_CAC_WAIT);
+	return  QDF_IS_STATUS_SUCCESS(wlan_vdev_is_dfs_cac_wait(sap_ctx->vdev));
 }
 #else
 static inline bool sap_is_dfs_cac_wait_state(struct sap_context *sap_ctx)
diff --git a/core/wma/src/wma_utils.c b/core/wma/src/wma_utils.c
index 71d31ac..3a8d608 100644
--- a/core/wma/src/wma_utils.c
+++ b/core/wma/src/wma_utils.c
@@ -4214,7 +4214,7 @@
 	vdev = wlan_objmgr_get_vdev_by_id_from_psoc(wma->psoc, vdev_id,
 			WLAN_LEGACY_WMA_ID);
 	if (vdev) {
-		is_up = wlan_vdev_is_up(vdev);
+		is_up = QDF_IS_STATUS_SUCCESS(wlan_vdev_is_up(vdev));
 		wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_WMA_ID);
 	}
 	return is_up;
