diff --git a/qdf/inc/qdf_types.h b/qdf/inc/qdf_types.h index b217580ea9e1..c6ecefb89925 100644 --- a/qdf/inc/qdf_types.h +++ b/qdf/inc/qdf_types.h @@ -394,6 +394,7 @@ typedef enum { QDF_MODULE_ID_OFFCHAN_TXRX, QDF_MODULE_ID_SON, QDF_MODULE_ID_SPECTRAL, + QDF_MODULE_ID_OBJ_MGR, QDF_MODULE_ID_ANY, QDF_MODULE_ID_MAX, } QDF_MODULE_ID; diff --git a/qdf/linux/src/qdf_trace.c b/qdf/linux/src/qdf_trace.c index 188c0600f7f6..17b0495c71c2 100644 --- a/qdf/linux/src/qdf_trace.c +++ b/qdf/linux/src/qdf_trace.c @@ -1840,6 +1840,7 @@ struct category_name_info g_qdf_category_name[MAX_SUPPORTED_CATEGORY] = { [QDF_MODULE_ID_P2P] = {"P2P"}, [QDF_MODULE_ID_OFFCHAN_TXRX] = {"OFFCHAN"}, [QDF_MODULE_ID_REGULATORY] = {"REGULATORY"}, + [QDF_MODULE_ID_OBJ_MGR] = {"OBJMGR"}, [QDF_MODULE_ID_ANY] = {"ANY"}, }; EXPORT_SYMBOL(g_qdf_category_name); @@ -2256,6 +2257,7 @@ static void set_default_trace_levels(struct category_info *cinfo) [QDF_MODULE_ID_NAN] = QDF_TRACE_LEVEL_NONE, [QDF_MODULE_ID_P2P] = QDF_TRACE_LEVEL_NONE, [QDF_MODULE_ID_OFFCHAN_TXRX] = QDF_TRACE_LEVEL_NONE, + [QDF_MODULE_ID_OBJ_MGR] = QDF_TRACE_LEVEL_INFO, [QDF_MODULE_ID_ANY] = QDF_TRACE_LEVEL_NONE, }; diff --git a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_cmn.h b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_cmn.h index 37315a69098b..06acabeb4fd5 100644 --- a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_cmn.h +++ b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_cmn.h @@ -38,6 +38,28 @@ #define WLAN_PEER_HASH(addr) \ (((const uint8_t *)(addr))[WLAN_MACADDR_LEN - 1] % WLAN_PEER_HASHSIZE) +#define obj_mgr_log(level, args...) \ + QDF_TRACE(QDF_MODULE_ID_OBJ_MGR, level, ## args) + +#define obj_mgr_logfl(level, format, args...) \ + obj_mgr_log(level, FL(format), ## args) + +#define obj_mgr_alert(format, args...) \ + obj_mgr_logfl(QDF_TRACE_LEVEL_FATAL, format, ## args) + +#define obj_mgr_err(format, args...) \ + obj_mgr_logfl(QDF_TRACE_LEVEL_ERROR, format, ## args) + +#define obj_mgr_warn(format, args...) \ + obj_mgr_logfl(QDF_TRACE_LEVEL_WARN, format, ## args) + +#define obj_mgr_info(format, args...) \ + obj_mgr_logfl(QDF_TRACE_LEVEL_INFO, format, ## args) + +#define obj_mgr_debug(format, args...) \ + obj_mgr_logfl(QDF_TRACE_LEVEL_DEBUG, format, ## args) + + /** * enum WLAN_OBJ_STATE - State of Object * @WLAN_OBJ_STATE_CREATED: All component objects are created @@ -249,6 +271,8 @@ static inline char *string_from_dbgid(wlan_objmgr_ref_dbgid id) "WLAN_NAN_ID", "WLAN_REGULATORY_SB_ID", "WLAN_REGULATORY_NB_ID", + "WLAN_OFFCHAN_TXRX_ID", + "WLAN_POLICY_MGR_ID", "WLAN_SON_ID", "WLAN_SPECTRAL_ID", "WLAN_REF_ID_MAX" }; diff --git a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_vdev_obj.h b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_vdev_obj.h index a7897160e19c..8d5e2da07403 100644 --- a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_vdev_obj.h +++ b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_vdev_obj.h @@ -762,12 +762,10 @@ static inline uint8_t *wlan_vdev_get_hw_macaddr(struct wlan_objmgr_vdev *vdev) struct wlan_objmgr_pdev *pdev = wlan_vdev_get_pdev(vdev); /* This API is invoked with lock acquired, do not add log prints */ - if (pdev != NULL) { + if (pdev != NULL) return wlan_pdev_get_hw_macaddr(pdev); - } else { - qdf_print("%s:pdev is NULL\n", __func__); + else return NULL; - } } /** diff --git a/umac/cmn_services/obj_mgr/src/wlan_objmgr_global_obj.c b/umac/cmn_services/obj_mgr/src/wlan_objmgr_global_obj.c index a65a0bb78b20..41faa1f23825 100644 --- a/umac/cmn_services/obj_mgr/src/wlan_objmgr_global_obj.c +++ b/umac/cmn_services/obj_mgr/src/wlan_objmgr_global_obj.c @@ -26,7 +26,7 @@ /* Global object, it is declared globally */ struct wlan_objmgr_global *g_umac_glb_obj; /* Component Name table */ -const char *wlan_umac_component_name[] = { +const char *wlan_umac_Component_name[] = { "MLME", "SCAN_MGR", "SCAN_CACHE", @@ -42,7 +42,7 @@ QDF_STATUS wlan_objmgr_global_obj_init(void) /* If it is already created, ignore */ if (g_umac_glb_obj != NULL) { - qdf_print("%s: Global object is already created\n", __func__); + obj_mgr_err("Global object is already created"); return QDF_STATUS_E_FAILURE; } @@ -50,8 +50,7 @@ QDF_STATUS wlan_objmgr_global_obj_init(void) umac_global_obj = (struct wlan_objmgr_global *)qdf_mem_malloc( sizeof(*umac_global_obj)); if (umac_global_obj == NULL) { - qdf_print("%s: Global object alloc failed due to malloc\n", - __func__); + obj_mgr_err("Global object alloc failed due to malloc"); return QDF_STATUS_E_NOMEM; } /* Store Global object pointer in Global variable */ @@ -67,7 +66,7 @@ QDF_STATUS wlan_objmgr_global_obj_deinit(void) { /* If it is already destroyed */ if (g_umac_glb_obj == NULL) { - qdf_print("%s: Global object is not allocated\n", __func__); + obj_mgr_err("Global object is not allocated"); return QDF_STATUS_E_FAILURE; } @@ -76,7 +75,7 @@ QDF_STATUS wlan_objmgr_global_obj_deinit(void) qdf_mem_free(g_umac_glb_obj); g_umac_glb_obj = NULL; } else { - qdf_print("PSOCs are leaked can't free global objmgr ctx\n"); + obj_mgr_err("PSOCs are leaked can't free global objmgr ctx"); WLAN_OBJMGR_BUG(0); } @@ -94,7 +93,7 @@ QDF_STATUS wlan_objmgr_register_psoc_create_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } @@ -102,8 +101,7 @@ QDF_STATUS wlan_objmgr_register_psoc_create_handler( /* If there is a valid entry, return failure */ if (g_umac_glb_obj->psoc_create_handler[id] != NULL) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is already registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is already registered", id); return QDF_STATUS_E_FAILURE; } /* Store handler and args in Global object table */ @@ -122,15 +120,14 @@ QDF_STATUS wlan_objmgr_unregister_psoc_create_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is an invalid entry, return failure */ if (g_umac_glb_obj->psoc_create_handler[id] != handler) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is not registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is not registered", id); return QDF_STATUS_E_FAILURE; } /* Reset handlers, and args to NULL */ @@ -149,15 +146,14 @@ QDF_STATUS wlan_objmgr_register_psoc_destroy_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is a valid entry, return failure */ if (g_umac_glb_obj->psoc_destroy_handler[id] != NULL) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is already registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is already registered", id); return QDF_STATUS_E_FAILURE; } /* Store handler and args in Global object table */ @@ -176,15 +172,14 @@ QDF_STATUS wlan_objmgr_unregister_psoc_destroy_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is an invalid entry, return failure */ if (g_umac_glb_obj->psoc_destroy_handler[id] != handler) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is not registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is not registered", id); return QDF_STATUS_E_FAILURE; } /* Reset handlers, and args to NULL */ @@ -203,15 +198,14 @@ QDF_STATUS wlan_objmgr_register_psoc_status_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is a valid entry, return failure */ if (g_umac_glb_obj->psoc_status_handler[id] != NULL) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is already registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is already registered", id); return QDF_STATUS_E_FAILURE; } /* Store handler and args in Global object table */ @@ -229,15 +223,14 @@ QDF_STATUS wlan_objmgr_unregister_psoc_status_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is an invalid entry, return failure */ if (g_umac_glb_obj->psoc_status_handler[id] != handler) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is not registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is not registered", id); return QDF_STATUS_E_FAILURE; } /* Reset handlers, and args to NULL */ @@ -256,15 +249,14 @@ QDF_STATUS wlan_objmgr_register_pdev_create_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is a valid entry, return failure */ if (g_umac_glb_obj->pdev_create_handler[id] != NULL) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is already registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is already registered", id); return QDF_STATUS_E_FAILURE; } /* Store handler and args in Global object table */ @@ -283,15 +275,14 @@ QDF_STATUS wlan_objmgr_unregister_pdev_create_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is an invalid entry, return failure */ if (g_umac_glb_obj->pdev_create_handler[id] != handler) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is not registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is not registered", id); return QDF_STATUS_E_FAILURE; } /* Reset handlers, and args to NULL */ @@ -310,15 +301,14 @@ QDF_STATUS wlan_objmgr_register_pdev_destroy_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is a valid entry, return failure */ if (g_umac_glb_obj->pdev_destroy_handler[id] != NULL) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is already registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is already registered", id); return QDF_STATUS_E_FAILURE; } /* Store handler and args in Global object table */ @@ -337,15 +327,14 @@ QDF_STATUS wlan_objmgr_unregister_pdev_destroy_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is an invalid entry, return failure */ if (g_umac_glb_obj->pdev_destroy_handler[id] != handler) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for component %d is not registered\n", - __func__, id); + obj_mgr_err("Callback for Component %d is not registered", id); return QDF_STATUS_E_FAILURE; } /* Reset handlers, and args to NULL */ @@ -364,15 +353,14 @@ QDF_STATUS wlan_objmgr_register_pdev_status_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is a valid entry, return failure */ if (g_umac_glb_obj->pdev_status_handler[id] != NULL) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is already registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is already registered", id); return QDF_STATUS_E_FAILURE; } /* Store handler and args in Global object table */ @@ -390,15 +378,14 @@ QDF_STATUS wlan_objmgr_unregister_pdev_status_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is an invalid entry, return failure */ if (g_umac_glb_obj->pdev_status_handler[id] != handler) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for component %d is not registered\n", - __func__, id); + obj_mgr_err("Callback for Component %d is not registered", id); return QDF_STATUS_E_FAILURE; } /* Reset handlers, and args to NULL */ @@ -417,15 +404,14 @@ QDF_STATUS wlan_objmgr_register_vdev_create_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is a valid entry, return failure */ if (g_umac_glb_obj->vdev_create_handler[id] != NULL) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is already registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is already registered", id); return QDF_STATUS_E_FAILURE; } /* Store handler and args in Global object table */ @@ -443,15 +429,14 @@ QDF_STATUS wlan_objmgr_unregister_vdev_create_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is an invalid entry, return failure */ if (g_umac_glb_obj->vdev_create_handler[id] != handler) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is not registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is not registered", id); return QDF_STATUS_E_FAILURE; } /* Reset handlers, and args to NULL */ @@ -469,15 +454,14 @@ QDF_STATUS wlan_objmgr_register_vdev_destroy_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is a valid entry, return failure */ if (g_umac_glb_obj->vdev_destroy_handler[id] != NULL) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is already registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is already registered", id); return QDF_STATUS_E_FAILURE; } /* Store handler and args in Global object table */ @@ -495,15 +479,14 @@ QDF_STATUS wlan_objmgr_unregister_vdev_destroy_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is an invalid entry, return failure */ if (g_umac_glb_obj->vdev_destroy_handler[id] != handler) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is not registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is not registered", id); return QDF_STATUS_E_FAILURE; } /* Reset handlers, and args to NULL */ @@ -521,15 +504,14 @@ QDF_STATUS wlan_objmgr_register_vdev_status_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is a valid entry, return failure */ if (g_umac_glb_obj->vdev_status_handler[id] != NULL) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is already registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is already registered", id); return QDF_STATUS_E_FAILURE; } /* Store handler and args in Global object table */ @@ -547,15 +529,14 @@ QDF_STATUS wlan_objmgr_unregister_vdev_status_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is an invalid entry, return failure */ if (g_umac_glb_obj->vdev_status_handler[id] != handler) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for component %d is not registered\n", - __func__, id); + obj_mgr_err("Callback for Component %d is not registered", id); return QDF_STATUS_E_FAILURE; } /* Reset handlers, and args to NULL */ @@ -574,15 +555,14 @@ QDF_STATUS wlan_objmgr_register_peer_create_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is a valid entry, return failure */ if (g_umac_glb_obj->peer_create_handler[id] != NULL) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is already registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is already registered", id); return QDF_STATUS_E_FAILURE; } /* Store handler and args in Global object table */ @@ -601,15 +581,14 @@ QDF_STATUS wlan_objmgr_unregister_peer_create_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is an invalid entry, return failure */ if (g_umac_glb_obj->peer_create_handler[id] != handler) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is not registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is not registered", id); return QDF_STATUS_E_FAILURE; } /* Reset handlers, and args to NULL */ @@ -627,15 +606,14 @@ QDF_STATUS wlan_objmgr_register_peer_destroy_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is a valid entry, return failure */ if (g_umac_glb_obj->peer_destroy_handler[id] != NULL) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is already registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is already registered", id); return QDF_STATUS_E_FAILURE; } /* Store handler and args in Global object table */ @@ -653,15 +631,14 @@ QDF_STATUS wlan_objmgr_unregister_peer_destroy_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is an invalid entry, return failure */ if (g_umac_glb_obj->peer_destroy_handler[id] != handler) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is not registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is not registered", id); return QDF_STATUS_E_FAILURE; } /* Reset handlers, and args to NULL */ @@ -679,15 +656,14 @@ QDF_STATUS wlan_objmgr_register_peer_status_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is a valid entry, return failure */ if (g_umac_glb_obj->peer_status_handler[id] != NULL) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is already registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is already registered", id); return QDF_STATUS_E_FAILURE; } /* Store handler and args in Global object table */ @@ -705,15 +681,14 @@ QDF_STATUS wlan_objmgr_unregister_peer_status_handler( { /* If id is not within valid range, return */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component %d is out of range\n", __func__, id); + obj_mgr_err("Component %d is out of range", id); return QDF_STATUS_MAXCOMP_FAIL; } qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); /* If there is an invalid entry, return failure */ if (g_umac_glb_obj->peer_status_handler[id] != handler) { qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - qdf_print("%s:callback for comp %d is not registered\n", - __func__, id); + obj_mgr_err("Callback for comp %d is not registered", id); return QDF_STATUS_E_FAILURE; } /* Reset handlers, and args to NULL */ @@ -789,12 +764,11 @@ void wlan_objmgr_print_ref_ids(qdf_atomic_t *id) uint32_t i; uint32_t pending_ref; - qdf_print(" Pending references of object\n"); + obj_mgr_info("Pending references of object"); for (i = 0; i < WLAN_REF_ID_MAX; i++) { pending_ref = qdf_atomic_read(&id[i]); if (pending_ref) - qdf_print(" %s -- %d\n", string_from_dbgid(i), pending_ref); + obj_mgr_info("%s -- %d", string_from_dbgid(i), pending_ref); } - return; } diff --git a/umac/cmn_services/obj_mgr/src/wlan_objmgr_pdev_obj.c b/umac/cmn_services/obj_mgr/src/wlan_objmgr_pdev_obj.c index a9e49ec40cb6..67a0a1c1cf0d 100644 --- a/umac/cmn_services/obj_mgr/src/wlan_objmgr_pdev_obj.c +++ b/umac/cmn_services/obj_mgr/src/wlan_objmgr_pdev_obj.c @@ -66,10 +66,21 @@ static QDF_STATUS wlan_objmgr_pdev_object_status( static QDF_STATUS wlan_objmgr_pdev_obj_free(struct wlan_objmgr_pdev *pdev) { + + uint8_t pdev_id; + + if (pdev == NULL) { + obj_mgr_err("pdev obj is NULL"); + QDF_ASSERT(0); + return QDF_STATUS_E_FAILURE; + } + + pdev_id = wlan_objmgr_pdev_get_pdev_id(pdev); + /* Detach PDEV from PSOC PDEV's list */ if (wlan_objmgr_psoc_pdev_detach(pdev->pdev_objmgr.wlan_psoc, pdev) == QDF_STATUS_E_FAILURE) { - qdf_print("%s: PSOC PDEV detach failed\n", __func__); + obj_mgr_err("PSOC PDEV detach failed: pdev-id: %d", pdev_id); return QDF_STATUS_E_FAILURE; } qdf_spinlock_destroy(&pdev->pdev_lock); @@ -90,19 +101,19 @@ struct wlan_objmgr_pdev *wlan_objmgr_pdev_obj_create( QDF_STATUS obj_status; if (psoc == NULL) { - qdf_print("%s:psoc is NULL\n", __func__); + obj_mgr_err("psoc is NULL"); return NULL; } /* Allocate PDEV object's memory */ pdev = qdf_mem_malloc(sizeof(*pdev)); if (pdev == NULL) { - qdf_print("%s:pdev alloc failed\n", __func__); + obj_mgr_err("pdev alloc failed"); return NULL; } /* Attach PDEV with PSOC */ if (wlan_objmgr_psoc_pdev_attach(psoc, pdev) != QDF_STATUS_SUCCESS) { - qdf_print("%s:pdev psoc attach failed\n", __func__); + obj_mgr_err("pdev psoc attach failed"); qdf_mem_free(pdev); return NULL; } @@ -150,8 +161,7 @@ struct wlan_objmgr_pdev *wlan_objmgr_pdev_obj_create( /* Component object failed to be created, clean up the object */ } else if (obj_status == QDF_STATUS_E_FAILURE) { /* Clean up the psoc */ - qdf_print("%s: PDEV component objects allocation failed\n", - __func__); + obj_mgr_err("PDEV component objects allocation failed"); wlan_objmgr_pdev_obj_delete(pdev); return NULL; } @@ -165,14 +175,17 @@ static QDF_STATUS wlan_objmgr_pdev_obj_destroy(struct wlan_objmgr_pdev *pdev) wlan_objmgr_pdev_destroy_handler handler; QDF_STATUS obj_status; void *arg; + uint8_t pdev_id; if (pdev == NULL) { - qdf_print("%s:pdev is NULL\n", __func__); + obj_mgr_err("pdev is NULL"); return QDF_STATUS_E_FAILURE; } + pdev_id = wlan_objmgr_pdev_get_pdev_id(pdev); + if (pdev->obj_state != WLAN_OBJ_STATE_LOGICALLY_DELETED) { - qdf_print("%s:pdev object delete is not invoked\n", __func__); + obj_mgr_err("pdev object delete is not invoked: pdev-id:%d", pdev_id); WLAN_OBJMGR_BUG(0); } @@ -189,8 +202,8 @@ static QDF_STATUS wlan_objmgr_pdev_obj_destroy(struct wlan_objmgr_pdev *pdev) obj_status = wlan_objmgr_pdev_object_status(pdev); if (obj_status == QDF_STATUS_E_FAILURE) { - qdf_print("%s: PDEV component objects destroy failed\n", - __func__); + obj_mgr_err("PDEV component objects destroy failed: pdev-id:%d", + pdev_id); /* Ideally should not happen */ /* This leads to memleak ??? how to handle */ QDF_BUG(0); @@ -209,7 +222,7 @@ static QDF_STATUS wlan_objmgr_pdev_obj_destroy(struct wlan_objmgr_pdev *pdev) QDF_STATUS wlan_objmgr_pdev_obj_delete(struct wlan_objmgr_pdev *pdev) { if (pdev == NULL) { - qdf_print("%s:pdev is NULL\n", __func__); + obj_mgr_err("pdev is NULL"); return QDF_STATUS_E_FAILURE; } /* @@ -241,15 +254,13 @@ QDF_STATUS wlan_objmgr_pdev_component_obj_attach( /* component id is invalid */ if (id >= WLAN_UMAC_MAX_COMPONENTS) { - qdf_print("%s: component-id %d is not supported\n", - __func__, id); + obj_mgr_err("component-id %d is not supported", id); return QDF_STATUS_MAXCOMP_FAIL; } wlan_pdev_obj_lock(pdev); /* If there is a valid entry, return failure */ if (pdev->pdev_comp_priv_obj[id] != NULL) { - qdf_print("%s: component-%d already have valid pointer\n", - __func__, id); + obj_mgr_err("component-%d already have valid pointer", id); wlan_pdev_obj_unlock(pdev); return QDF_STATUS_E_FAILURE; } @@ -776,7 +787,7 @@ void wlan_objmgr_pdev_get_ref(struct wlan_objmgr_pdev *pdev, wlan_objmgr_ref_dbgid id) { if (pdev == NULL) { - qdf_print("%s: pdev obj is NULL\n", __func__); + obj_mgr_err("pdev obj is NULL"); QDF_ASSERT(0); return; } @@ -790,17 +801,20 @@ EXPORT_SYMBOL(wlan_objmgr_pdev_get_ref); QDF_STATUS wlan_objmgr_pdev_try_get_ref(struct wlan_objmgr_pdev *pdev, wlan_objmgr_ref_dbgid id) { + uint8_t pdev_id; + if (pdev == NULL) { - qdf_print("%s: pdev obj is NULL\n", __func__); + obj_mgr_err("pdev obj is NULL"); QDF_ASSERT(0); return QDF_STATUS_E_FAILURE; } wlan_pdev_obj_lock(pdev); + pdev_id = wlan_objmgr_pdev_get_pdev_id(pdev); if (pdev->obj_state == WLAN_OBJ_STATE_LOGICALLY_DELETED) { wlan_pdev_obj_unlock(pdev); - qdf_print("%s: pdev obj is in Deletion Progress state\n", - __func__); + obj_mgr_err("pdev obj is in Deletion Progress state: pdev-id: %d", + pdev_id) ; return QDF_STATUS_E_RESOURCES; } @@ -814,21 +828,24 @@ EXPORT_SYMBOL(wlan_objmgr_pdev_try_get_ref); void wlan_objmgr_pdev_release_ref(struct wlan_objmgr_pdev *pdev, wlan_objmgr_ref_dbgid id) { + uint8_t pdev_id; + if (pdev == NULL) { - qdf_print("%s: pdev obj is NULL\n", __func__); + obj_mgr_err("pdev obj is NULL"); QDF_ASSERT(0); return; } + pdev_id = wlan_objmgr_pdev_get_pdev_id(pdev); + if (!qdf_atomic_read(&pdev->pdev_objmgr.ref_id_dbg[id])) { - qdf_print("%s: pdev ref cnt was not taken by %d\n", - __func__, id); + obj_mgr_err("pdev (id:%d)ref cnt was not taken by %d", pdev_id, id); wlan_objmgr_print_ref_ids(pdev->pdev_objmgr.ref_id_dbg); WLAN_OBJMGR_BUG(0); } if (!qdf_atomic_read(&pdev->pdev_objmgr.ref_cnt)) { - qdf_print("%s: pdev ref cnt is 0\n", __func__); + obj_mgr_err("pdev ref cnt is 0: pdev-id:%d", pdev_id); WLAN_OBJMGR_BUG(0); return; } diff --git a/umac/cmn_services/obj_mgr/src/wlan_objmgr_peer_obj.c b/umac/cmn_services/obj_mgr/src/wlan_objmgr_peer_obj.c index 7eb5692dd337..c59760accd03 100644 --- a/umac/cmn_services/obj_mgr/src/wlan_objmgr_peer_obj.c +++ b/umac/cmn_services/obj_mgr/src/wlan_objmgr_peer_obj.c @@ -69,17 +69,32 @@ static QDF_STATUS wlan_objmgr_peer_obj_free(struct wlan_objmgr_peer *peer) { struct wlan_objmgr_psoc *psoc; struct wlan_objmgr_vdev *vdev; + uint8_t *macaddr; + uint8_t vdev_id; + + if (peer == NULL) { + obj_mgr_err("PEER is NULL"); + return QDF_STATUS_E_FAILURE; + } + + macaddr = wlan_peer_get_macaddr(peer); vdev = wlan_peer_get_vdev(peer); if (vdev == NULL) { - qdf_print("%s: VDEV is NULL\n", __func__); + obj_mgr_err("VDEV is NULL for peer(%02x:%02x:%02x:%02x:%02x:%02x)", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); return QDF_STATUS_E_FAILURE; } + vdev_id = wlan_vdev_get_id(vdev); + /* get PSOC from VDEV, if it is NULL, return */ psoc = wlan_vdev_get_psoc(vdev); if (psoc == NULL) { - qdf_print("%s: PSOC is NULL\n", __func__); + obj_mgr_err("PSOC is NULL for peer(%02x:%02x:%02x:%02x:%02x:%02x)", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); return QDF_STATUS_E_FAILURE; } @@ -91,12 +106,17 @@ static QDF_STATUS wlan_objmgr_peer_obj_free(struct wlan_objmgr_peer *peer) /* Detach peer from VDEV's peer list */ if (wlan_objmgr_vdev_peer_detach(vdev, peer) == QDF_STATUS_E_FAILURE) { - qdf_print("%s: Peer VDEV detach failure\n", __func__); + obj_mgr_err("Peer(%02x:%02x:%02x:%02x:%02x:%02x) VDEV detach failure \ + for vdev-id: %d", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5], vdev_id); return QDF_STATUS_E_FAILURE; } /* Detach peer from PSOC's peer list */ if (wlan_objmgr_psoc_peer_detach(psoc, peer) == QDF_STATUS_E_FAILURE) { - qdf_print("%s: Peer PSOC detach failure\n", __func__); + obj_mgr_err("Peer(%02x:%02x:%02x:%02x:%02x:%02x) PSOC detach failure", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); return QDF_STATUS_E_FAILURE; } qdf_spinlock_destroy(&peer->peer_lock); @@ -120,19 +140,25 @@ struct wlan_objmgr_peer *wlan_objmgr_peer_obj_create( uint8_t id; if (vdev == NULL) { - qdf_print("%s: VDEV is NULL\n", __func__); + obj_mgr_err("VDEV is NULL for peer (%02x:%02x:%02x:%02x:%02x:%02x)", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); return NULL; } /* Get psoc, if psoc is NULL, return */ psoc = wlan_vdev_get_psoc(vdev); if (psoc == NULL) { - qdf_print("%s: PSOC is NULL\n", __func__); + obj_mgr_err("PSOC is NULL for peer (%02x:%02x:%02x:%02x:%02x:%02x)", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); return NULL; } /* Allocate memory for peer object */ peer = qdf_mem_malloc(sizeof(*peer)); if (peer == NULL) { - qdf_print("%s: Peer allocation failure\n", __func__); + obj_mgr_err("Peer(%02x:%02x:%02x:%02x:%02x:%02x) allocation failure", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); return NULL; } /* set vdev to peer */ @@ -148,14 +174,20 @@ struct wlan_objmgr_peer *wlan_objmgr_peer_obj_create( /* Attach peer to psoc, psoc maintains the node table for the device */ if (wlan_objmgr_psoc_peer_attach(psoc, peer) != QDF_STATUS_SUCCESS) { - qdf_print("%s: Peer PSOC attach failure\n", __func__); + obj_mgr_err("Peer(%02x:%02x:%02x:%02x:%02x:%02x) \ + PSOC attach failure", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); qdf_mem_free(peer); return NULL; } /* Attach peer to vdev peer table */ if (wlan_objmgr_vdev_peer_attach(vdev, peer) != QDF_STATUS_SUCCESS) { - qdf_print("%s: Peer VDEV attach failure\n", __func__); + obj_mgr_err("Peer(%02x:%02x:%02x:%02x:%02x:%02x) \ + VDEV attach failure", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); /* if attach fails, detach from psoc table before free */ wlan_objmgr_psoc_peer_detach(psoc, peer); qdf_mem_free(peer); @@ -196,8 +228,10 @@ struct wlan_objmgr_peer *wlan_objmgr_peer_obj_create( peer->obj_state = WLAN_OBJ_STATE_PARTIALLY_CREATED; } else if (obj_status == QDF_STATUS_E_FAILURE) { /* Clean up the peer */ - qdf_print("%s: Peer component object alloc failure\n", - __func__); + obj_mgr_err("Peer(%02x:%02x:%02x:%02x:%02x:%02x) \ + component object alloc failure", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); wlan_objmgr_peer_obj_delete(peer); return NULL; } @@ -210,14 +244,20 @@ static QDF_STATUS wlan_objmgr_peer_obj_destroy(struct wlan_objmgr_peer *peer) wlan_objmgr_peer_destroy_handler handler; QDF_STATUS obj_status; void *arg; + uint8_t *macaddr; if (peer == NULL) { - qdf_print("%s: PEER is NULL\n", __func__); + obj_mgr_err("PEER is NULL"); return QDF_STATUS_E_FAILURE; } + macaddr = wlan_peer_get_macaddr(peer); + if (peer->obj_state != WLAN_OBJ_STATE_LOGICALLY_DELETED) { - qdf_print("%s:peer object delete is not invoked\n", __func__); + obj_mgr_err("peer(%02x:%02x:%02x:%02x:%02x:%02x) \ + object delete is not invoked", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); WLAN_OBJMGR_BUG(0); } @@ -250,7 +290,7 @@ static QDF_STATUS wlan_objmgr_peer_obj_destroy(struct wlan_objmgr_peer *peer) QDF_STATUS wlan_objmgr_peer_obj_delete(struct wlan_objmgr_peer *peer) { if (peer == NULL) { - qdf_print("%s: PEER is NULL\n", __func__); + obj_mgr_err("PEER is NULL"); return QDF_STATUS_E_FAILURE; } @@ -501,7 +541,7 @@ void wlan_objmgr_peer_get_ref(struct wlan_objmgr_peer *peer, wlan_objmgr_ref_dbgid id) { if (peer == NULL) { - qdf_print("%s: peer obj is NULL\n", __func__); + obj_mgr_err("peer obj is NULL for %d", id); QDF_ASSERT(0); return; } @@ -516,17 +556,23 @@ EXPORT_SYMBOL(wlan_objmgr_peer_get_ref); QDF_STATUS wlan_objmgr_peer_try_get_ref(struct wlan_objmgr_peer *peer, wlan_objmgr_ref_dbgid id) { + + uint8_t *macaddr; + if (peer == NULL) { - qdf_print("%s: peer obj is NULL\n", __func__); + obj_mgr_err("peer obj is NULL for %d", id); QDF_ASSERT(0); return QDF_STATUS_E_FAILURE; } wlan_peer_obj_lock(peer); + macaddr = wlan_peer_get_macaddr(peer); if (peer->obj_state == WLAN_OBJ_STATE_LOGICALLY_DELETED) { wlan_peer_obj_unlock(peer); - qdf_print("%s: peer obj is in Deletion Progress state\n", - __func__); + obj_mgr_err("peer(%02x:%02x:%02x:%02x:%02x:%02x) obj \ + is in Deletion Progress state", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); return QDF_STATUS_E_RESOURCES; } @@ -540,21 +586,30 @@ EXPORT_SYMBOL(wlan_objmgr_peer_try_get_ref); void wlan_objmgr_peer_release_ref(struct wlan_objmgr_peer *peer, wlan_objmgr_ref_dbgid id) { + + uint8_t *macaddr; + if (peer == NULL) { - qdf_print("%s: peer obj is NULL\n", __func__); + obj_mgr_err("peer obj is NULL for %d", id); QDF_ASSERT(0); return; } + macaddr = wlan_peer_get_macaddr(peer); + if (!qdf_atomic_read(&peer->peer_objmgr.ref_id_dbg[id])) { - qdf_print("%s: peer ref cnt was not taken by %d\n", - __func__, id); + obj_mgr_err("peer(%02x:%02x:%02x:%02x:%02x:%02x) \ + ref cnt was not taken by %d", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5], id); wlan_objmgr_print_ref_ids(peer->peer_objmgr.ref_id_dbg); WLAN_OBJMGR_BUG(0); } if (!qdf_atomic_read(&peer->peer_objmgr.ref_cnt)) { - qdf_print("%s: peer ref cnt is 0\n", __func__); + obj_mgr_err("peer(%02x:%02x:%02x:%02x:%02x:%02x) ref cnt is 0", + macaddr[0], macaddr[1], macaddr[2], + macaddr[3], macaddr[4], macaddr[5]); WLAN_OBJMGR_BUG(0); return; } diff --git a/umac/cmn_services/obj_mgr/src/wlan_objmgr_psoc_obj.c b/umac/cmn_services/obj_mgr/src/wlan_objmgr_psoc_obj.c index baca628a1605..8f99154e62ec 100644 --- a/umac/cmn_services/obj_mgr/src/wlan_objmgr_psoc_obj.c +++ b/umac/cmn_services/obj_mgr/src/wlan_objmgr_psoc_obj.c @@ -95,7 +95,7 @@ static QDF_STATUS wlan_objmgr_psoc_obj_free(struct wlan_objmgr_psoc *psoc) /* Detach PSOC from global object's psoc list */ if (wlan_objmgr_psoc_object_detach(psoc) == QDF_STATUS_E_FAILURE) { - qdf_print("%s: PSOC object detach failed\n", __func__); + obj_mgr_err("PSOC object detach failed"); return QDF_STATUS_E_FAILURE; } wlan_objmgr_psoc_peer_list_deinit(&psoc->soc_objmgr.peer_list); @@ -120,7 +120,7 @@ struct wlan_objmgr_psoc *wlan_objmgr_psoc_obj_create(uint32_t phy_version, psoc = qdf_mem_malloc(sizeof(*psoc)); if (psoc == NULL) { - qdf_print("%s: PSOC allocation failed\n", __func__); + obj_mgr_err("PSOC allocation failed"); return NULL; } qdf_spinlock_create(&psoc->psoc_lock); @@ -167,8 +167,7 @@ struct wlan_objmgr_psoc *wlan_objmgr_psoc_obj_create(uint32_t phy_version, psoc->obj_state = WLAN_OBJ_STATE_PARTIALLY_CREATED; } else if (obj_status == QDF_STATUS_E_FAILURE) { /* Component object failed to be created, clean up the object */ - qdf_print("%s: PSOC component objects allocation failed\n", - __func__); + obj_mgr_err("PSOC component objects allocation failed"); /* Clean up the psoc */ wlan_objmgr_psoc_obj_delete(psoc); return NULL; @@ -176,7 +175,7 @@ struct wlan_objmgr_psoc *wlan_objmgr_psoc_obj_create(uint32_t phy_version, if (wlan_objmgr_psoc_object_attach(psoc) != QDF_STATUS_SUCCESS) { - qdf_print("%s: PSOC object attach failed\n", __func__); + obj_mgr_err("PSOC object attach failed"); wlan_objmgr_psoc_obj_delete(psoc); return NULL; } @@ -193,12 +192,12 @@ static QDF_STATUS wlan_objmgr_psoc_obj_destroy(struct wlan_objmgr_psoc *psoc) void *arg; if (psoc == NULL) { - qdf_print("%s:psoc is NULL\n", __func__); + obj_mgr_err("psoc is NULL"); return QDF_STATUS_E_FAILURE; } if (psoc->obj_state != WLAN_OBJ_STATE_LOGICALLY_DELETED) { - qdf_print("%s:psoc object delete is not invoked\n", __func__); + obj_mgr_err("psoc object delete is not invoked"); WLAN_OBJMGR_BUG(0); } @@ -215,7 +214,7 @@ static QDF_STATUS wlan_objmgr_psoc_obj_destroy(struct wlan_objmgr_psoc *psoc) obj_status = wlan_objmgr_psoc_object_status(psoc); if (obj_status == QDF_STATUS_E_FAILURE) { - qdf_print("%s: PSOC component object free failed\n", __func__); + obj_mgr_err("PSOC component object free failed"); /* Ideally should not happen * This leads to memleak, BUG_ON to find which component * delete notification failed and fix it. @@ -237,7 +236,7 @@ static QDF_STATUS wlan_objmgr_psoc_obj_destroy(struct wlan_objmgr_psoc *psoc) QDF_STATUS wlan_objmgr_psoc_obj_delete(struct wlan_objmgr_psoc *psoc) { if (psoc == NULL) { - qdf_print("%s:psoc is NULL\n", __func__); + obj_mgr_err("psoc is NULL"); return QDF_STATUS_E_FAILURE; } /* @@ -1353,7 +1352,7 @@ QDF_STATUS wlan_objmgr_psoc_peer_detach(struct wlan_objmgr_psoc *psoc, QDF_STATUS_E_FAILURE) { qdf_spin_unlock_bh(&peer_list->peer_list_lock); wlan_psoc_obj_unlock(psoc); - qdf_print("%s: Failed to detach peer\n", __func__); + obj_mgr_err("Failed to detach peer"); return QDF_STATUS_E_FAILURE; } qdf_spin_unlock_bh(&peer_list->peer_list_lock); @@ -1622,7 +1621,7 @@ void wlan_objmgr_psoc_get_ref(struct wlan_objmgr_psoc *psoc, wlan_objmgr_ref_dbgid id) { if (psoc == NULL) { - qdf_print("%s: psoc obj is NULL\n", __func__); + obj_mgr_err("psoc obj is NULL for id:%d", id); QDF_ASSERT(0); return; } @@ -1637,7 +1636,7 @@ QDF_STATUS wlan_objmgr_psoc_try_get_ref(struct wlan_objmgr_psoc *psoc, wlan_objmgr_ref_dbgid id) { if (psoc == NULL) { - qdf_print("%s: psoc obj is NULL\n", __func__); + obj_mgr_err("psoc obj is NULL for id:%d", id); QDF_ASSERT(0); return QDF_STATUS_E_FAILURE; } @@ -1645,8 +1644,7 @@ QDF_STATUS wlan_objmgr_psoc_try_get_ref(struct wlan_objmgr_psoc *psoc, wlan_psoc_obj_lock(psoc); if (psoc->obj_state == WLAN_OBJ_STATE_LOGICALLY_DELETED) { wlan_psoc_obj_unlock(psoc); - qdf_print("%s: psoc obj is in Deletion Progress staet\n", - __func__); + obj_mgr_err("Called by %d, psoc obj is in Deletion Progress state", id); return QDF_STATUS_E_RESOURCES; } @@ -1662,20 +1660,19 @@ void wlan_objmgr_psoc_release_ref(struct wlan_objmgr_psoc *psoc, wlan_objmgr_ref_dbgid id) { if (psoc == NULL) { - qdf_print("%s: psoc obj is NULL\n", __func__); + obj_mgr_err("psoc obj is NULLi for id:%d", id); QDF_ASSERT(0); return; } if (!qdf_atomic_read(&psoc->soc_objmgr.ref_id_dbg[id])) { - qdf_print("%s: psoc ref cnt was not taken by %d\n", - __func__, id); + obj_mgr_err("psoc ref cnt was not taken by %d", id); wlan_objmgr_print_ref_ids(psoc->soc_objmgr.ref_id_dbg); WLAN_OBJMGR_BUG(0); } if (!qdf_atomic_read(&psoc->soc_objmgr.ref_cnt)) { - qdf_print("%s: psoc ref cnt is 0\n", __func__); + obj_mgr_err("psoc ref cnt is 0"); WLAN_OBJMGR_BUG(0); return; } @@ -1699,7 +1696,7 @@ static void wlan_objmgr_psoc_peer_ref_print(struct wlan_objmgr_psoc *psoc, macaddr = wlan_peer_get_macaddr(peer); wlan_peer_obj_unlock(peer); - qdf_print(" Peer MAC is %02x:%02x:%02x:%02x:%02x:%02x\n", + obj_mgr_info("Peer MAC is %02x:%02x:%02x:%02x:%02x:%02x", macaddr[0], macaddr[1], macaddr[2], macaddr[3], macaddr[4], macaddr[5]); wlan_objmgr_print_ref_ids(peer->peer_objmgr.ref_id_dbg); @@ -1714,7 +1711,7 @@ static void wlan_objmgr_psoc_vdev_ref_print(struct wlan_objmgr_psoc *psoc, wlan_vdev_obj_lock(vdev); id = wlan_vdev_get_id(vdev); wlan_vdev_obj_unlock(vdev); - qdf_print(" Vdev ID is %d\n", id); + obj_mgr_info("Vdev ID is %d", id); wlan_objmgr_print_ref_ids(vdev->vdev_objmgr.ref_id_dbg); } @@ -1726,9 +1723,9 @@ static void wlan_objmgr_psoc_pdev_ref_print(struct wlan_objmgr_psoc *psoc, uint8_t id; wlan_pdev_obj_lock(pdev); - id = pdev->pdev_objmgr.wlan_pdev_id; + id = wlan_objmgr_pdev_get_pdev_id(pdev); wlan_pdev_obj_unlock(pdev); - qdf_print(" pdev ID is %d\n", id); + obj_mgr_info("pdev ID is %d", id); wlan_objmgr_print_ref_ids(pdev->pdev_objmgr.ref_id_dbg); } @@ -1736,20 +1733,20 @@ static void wlan_objmgr_psoc_pdev_ref_print(struct wlan_objmgr_psoc *psoc, QDF_STATUS wlan_objmgr_print_ref_all_objects_per_psoc( struct wlan_objmgr_psoc *psoc) { - qdf_print(" Ref counts of PEER\n"); - wlan_objmgr_iterate_obj_list_all(psoc, WLAN_PEER_OP, - wlan_objmgr_psoc_peer_ref_print, NULL, 1, - WLAN_OBJMGR_ID); - qdf_print(" Ref counts of VDEV\n"); - wlan_objmgr_iterate_obj_list_all(psoc, WLAN_VDEV_OP, - wlan_objmgr_psoc_vdev_ref_print, NULL, 1, - WLAN_OBJMGR_ID); - qdf_print(" Ref counts of PDEV\n"); - wlan_objmgr_iterate_obj_list_all(psoc, WLAN_PDEV_OP, - wlan_objmgr_psoc_pdev_ref_print, NULL, 1, - WLAN_OBJMGR_ID); + obj_mgr_info("Ref counts of PEER"); + wlan_objmgr_iterate_obj_list(psoc, WLAN_PEER_OP, + wlan_objmgr_psoc_peer_ref_print, NULL, 1, + WLAN_OBJMGR_ID); + obj_mgr_info("Ref counts of VDEV"); + wlan_objmgr_iterate_obj_list(psoc, WLAN_VDEV_OP, + wlan_objmgr_psoc_vdev_ref_print, NULL, 1, + WLAN_OBJMGR_ID); + obj_mgr_info("Ref counts of PDEV"); + wlan_objmgr_iterate_obj_list(psoc, WLAN_PDEV_OP, + wlan_objmgr_psoc_pdev_ref_print, NULL, 1, + WLAN_OBJMGR_ID); - qdf_print(" Ref counts of PSOC\n"); + obj_mgr_info(" Ref counts of PSOC"); wlan_objmgr_print_ref_ids(psoc->soc_objmgr.ref_id_dbg); return QDF_STATUS_SUCCESS; @@ -1760,7 +1757,7 @@ QDF_STATUS wlan_objmgr_psoc_set_user_config(struct wlan_objmgr_psoc *psoc, struct wlan_objmgr_psoc_user_config *user_config_data) { if (user_config_data == NULL) { - qdf_print("%s:user_config_data is NULL\n", __func__); + obj_mgr_err("user_config_data is NULL"); QDF_BUG(0); return QDF_STATUS_E_FAILURE; } diff --git a/umac/cmn_services/obj_mgr/src/wlan_objmgr_vdev_obj.c b/umac/cmn_services/obj_mgr/src/wlan_objmgr_vdev_obj.c index 510610a42c93..0e07247c0d96 100644 --- a/umac/cmn_services/obj_mgr/src/wlan_objmgr_vdev_obj.c +++ b/umac/cmn_services/obj_mgr/src/wlan_objmgr_vdev_obj.c @@ -75,10 +75,15 @@ static QDF_STATUS wlan_objmgr_vdev_obj_free(struct wlan_objmgr_vdev *vdev) { struct wlan_objmgr_pdev *pdev; + if (vdev == NULL) { + obj_mgr_err("vdev is NULL"); + return QDF_STATUS_E_FAILURE; + } /* if PDEV is NULL, return */ pdev = wlan_vdev_get_pdev(vdev); if (pdev == NULL) { - qdf_print("%s:pdev is NULL\n", __func__); + obj_mgr_err("pdev is NULL for vdev-id: %d", + vdev->vdev_objmgr.vdev_id); return QDF_STATUS_E_FAILURE; } @@ -113,26 +118,28 @@ struct wlan_objmgr_vdev *wlan_objmgr_vdev_obj_create( QDF_STATUS obj_status; if (pdev == NULL) { - qdf_print("%s: pdev is NULL\n", __func__); + obj_mgr_err("pdev is NULL"); return NULL; } psoc = wlan_pdev_get_psoc(pdev); /* PSOC is NULL */ if (psoc == NULL) { - qdf_print("%s: psoc is NULL\n", __func__); + obj_mgr_err("psoc is NULL for pdev-id:%d", + pdev->pdev_objmgr.wlan_pdev_id); return NULL; } /* Allocate vdev object memory */ vdev = qdf_mem_malloc(sizeof(*vdev)); if (vdev == NULL) { - qdf_print("%s: Memory allocation failure\n", __func__); + obj_mgr_err("Memory allocation failure"); return NULL; } /* Attach VDEV to PSOC VDEV's list */ if (wlan_objmgr_psoc_vdev_attach(psoc, vdev) != QDF_STATUS_SUCCESS) { + obj_mgr_err("psoc vdev attach failed for vdev-id:%d", + vdev->vdev_objmgr.vdev_id); qdf_mem_free(vdev); - qdf_print("%s: psoc vdev attach failed\n", __func__); return NULL; } /* Store pdev in vdev */ @@ -140,7 +147,8 @@ struct wlan_objmgr_vdev *wlan_objmgr_vdev_obj_create( /* Attach vdev to PDEV */ if (wlan_objmgr_pdev_vdev_attach(pdev, vdev) != QDF_STATUS_SUCCESS) { - qdf_print("%s: pdev vdev attach failed\n", __func__); + obj_mgr_err("pdev vdev attach failed for vdev-id:%d", + vdev->vdev_objmgr.vdev_id); wlan_objmgr_psoc_vdev_detach(psoc, vdev); qdf_mem_free(vdev); return NULL; @@ -207,8 +215,8 @@ struct wlan_objmgr_vdev *wlan_objmgr_vdev_obj_create( } else if (obj_status == QDF_STATUS_E_FAILURE) { /* Clean up the psoc */ wlan_objmgr_vdev_obj_delete(vdev); - qdf_print("%s:VDEV component objects creation failed\n", - __func__); + obj_mgr_err("VDEV component objects creation failed for vdev-id:%d", + vdev->vdev_objmgr.vdev_id); return NULL; } return vdev; @@ -221,14 +229,18 @@ static QDF_STATUS wlan_objmgr_vdev_obj_destroy(struct wlan_objmgr_vdev *vdev) wlan_objmgr_vdev_destroy_handler handler; QDF_STATUS obj_status; void *arg; + uint8_t vdev_id; if (vdev == NULL) { - qdf_print("%s:vdev is NULL\n", __func__); + obj_mgr_err("vdev is NULL"); return QDF_STATUS_E_FAILURE; } + vdev_id = wlan_vdev_get_id(vdev); + if (vdev->obj_state != WLAN_OBJ_STATE_LOGICALLY_DELETED) { - qdf_print("%s:vdev object delete is not invoked\n", __func__); + obj_mgr_err("vdev object delete is not invoked: vdev-id:%d", + wlan_vdev_get_id(vdev)); WLAN_OBJMGR_BUG(0); } @@ -245,7 +257,7 @@ static QDF_STATUS wlan_objmgr_vdev_obj_destroy(struct wlan_objmgr_vdev *vdev) obj_status = wlan_objmgr_vdev_object_status(vdev); if (obj_status == QDF_STATUS_E_FAILURE) { - qdf_print("%s: VDEV object deletion failed\n", __func__); + obj_mgr_err("VDEV object deletion failed: vdev-id: %d", vdev_id); /* Ideally should not happen */ /* This leads to memleak ??? how to handle */ QDF_BUG(0); @@ -265,7 +277,7 @@ static QDF_STATUS wlan_objmgr_vdev_obj_destroy(struct wlan_objmgr_vdev *vdev) QDF_STATUS wlan_objmgr_vdev_obj_delete(struct wlan_objmgr_vdev *vdev) { if (vdev == NULL) { - qdf_print("%s:vdev is NULL\n", __func__); + obj_mgr_err("vdev is NULL"); return QDF_STATUS_E_FAILURE; } /* @@ -424,17 +436,19 @@ QDF_STATUS wlan_objmgr_iterate_peerobj_list( qdf_list_t *peer_list = NULL; struct wlan_objmgr_peer *peer = NULL; struct wlan_objmgr_peer *peer_next = NULL; + uint8_t vdev_id; if (vdev == NULL) { - qdf_print("%s: VDEV NULL\n", __func__); + obj_mgr_err("VDEV is NULL"); return QDF_STATUS_E_FAILURE; } wlan_vdev_obj_lock(vdev); + vdev_id = wlan_vdev_get_id(vdev); if (vdev->obj_state == WLAN_OBJ_STATE_LOGICALLY_DELETED) { wlan_vdev_obj_unlock(vdev); - qdf_print("%s: VDEV is in delete progress\n", __func__); + obj_mgr_err("VDEV is in delete progress: vdev-id:%d", vdev_id); return QDF_STATUS_E_FAILURE; } wlan_objmgr_vdev_get_ref(vdev, dbg_id); @@ -684,7 +698,7 @@ void wlan_objmgr_vdev_get_ref(struct wlan_objmgr_vdev *vdev, wlan_objmgr_ref_dbgid id) { if (vdev == NULL) { - qdf_print("%s: vdev obj is NULL\n", __func__); + obj_mgr_err("vdev obj is NULL for id:%d", id); QDF_ASSERT(0); return; } @@ -699,17 +713,20 @@ EXPORT_SYMBOL(wlan_objmgr_vdev_get_ref); QDF_STATUS wlan_objmgr_vdev_try_get_ref(struct wlan_objmgr_vdev *vdev, wlan_objmgr_ref_dbgid id) { + uint8_t vdev_id; + if (vdev == NULL) { - qdf_print("%s: vdev obj is NULL\n", __func__); + obj_mgr_err("vdev obj is NULL for id:%d", id); QDF_ASSERT(0); return QDF_STATUS_E_FAILURE; } wlan_vdev_obj_lock(vdev); + vdev_id = wlan_vdev_get_id(vdev); if (vdev->obj_state == WLAN_OBJ_STATE_LOGICALLY_DELETED) { wlan_vdev_obj_unlock(vdev); - qdf_print("%s: vdev obj is in Deletion Progress state\n", - __func__); + obj_mgr_err("called by %d, vdev obj is in Deletion Progress state: \ + vdev-id:%d", id, vdev_id); return QDF_STATUS_E_RESOURCES; } @@ -724,21 +741,24 @@ EXPORT_SYMBOL(wlan_objmgr_vdev_try_get_ref); void wlan_objmgr_vdev_release_ref(struct wlan_objmgr_vdev *vdev, wlan_objmgr_ref_dbgid id) { + uint8_t vdev_id; + if (vdev == NULL) { - qdf_print("%s: vdev obj is NULL\n", __func__); + obj_mgr_err("vdev obj is NULL for id:%d", id); QDF_ASSERT(0); return; } + vdev_id = wlan_vdev_get_id(vdev); + if (!qdf_atomic_read(&vdev->vdev_objmgr.ref_id_dbg[id])) { - qdf_print("%s: vdev ref cnt was not taken by %d\n", - __func__, id); + obj_mgr_err("vdev (id:%d)ref cnt was not taken by %d", vdev_id, id); wlan_objmgr_print_ref_ids(vdev->vdev_objmgr.ref_id_dbg); WLAN_OBJMGR_BUG(0); } if (!qdf_atomic_read(&vdev->vdev_objmgr.ref_cnt)) { - qdf_print("%s: vdev ref cnt is 0\n", __func__); + obj_mgr_err("vdev ref cnt is 0"); WLAN_OBJMGR_BUG(0); return; }