diff --git a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_obj.h b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_obj.h index 3dee85484bb8..09695cb9413b 100644 --- a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_obj.h +++ b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_psoc_obj.h @@ -211,6 +211,7 @@ struct wlan_objmgr_psoc_nif { /** * struct wlan_objmgr_psoc_objmgr - psoc object manager sub structure + * @psoc_id: The PSOC's numeric Id * @wlan_pdev_count: PDEV count * @wlan_pdev_list[]: PDEV list * @wlan_pdev_id_map: PDEV id map, to allocate free ids @@ -226,6 +227,7 @@ struct wlan_objmgr_psoc_nif { * @qdf_dev: QDF Device */ struct wlan_objmgr_psoc_objmgr { + uint8_t psoc_id; uint8_t wlan_pdev_count; struct wlan_objmgr_pdev *wlan_pdev_list[WLAN_UMAC_MAX_PDEVS]; uint8_t wlan_pdev_id_map; 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 3570dbed2986..dd800f1835b5 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 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2017 The Linux Foundation. All rights reserved. + * Copyright (c) 2016-2018 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 @@ -21,18 +21,12 @@ #include "wlan_objmgr_global_obj_i.h" #include +#include "wlan_objmgr_psoc_obj.h" #include "qdf_mem.h" /* Global object, it is declared globally */ struct wlan_objmgr_global *g_umac_glb_obj; -/* Component Name table */ -const char *wlan_umac_Component_name[] = { - "MLME", - "SCAN_MGR", - "SCAN_CACHE", - "MGMT_TXRX", - "", -}; + /* ** APIs to Create/Delete Global object APIs */ @@ -715,7 +709,6 @@ QDF_STATUS wlan_objmgr_unregister_peer_status_handler( return QDF_STATUS_SUCCESS; } - QDF_STATUS wlan_objmgr_psoc_object_attach(struct wlan_objmgr_psoc *psoc) { uint8_t index = 0; @@ -727,6 +720,7 @@ QDF_STATUS wlan_objmgr_psoc_object_attach(struct wlan_objmgr_psoc *psoc) if (g_umac_glb_obj->psoc[index] == NULL) { /* Found free slot, store psoc */ g_umac_glb_obj->psoc[index] = psoc; + psoc->soc_objmgr.psoc_id = index; status = QDF_STATUS_SUCCESS; break; } @@ -738,21 +732,18 @@ QDF_STATUS wlan_objmgr_psoc_object_attach(struct wlan_objmgr_psoc *psoc) QDF_STATUS wlan_objmgr_psoc_object_detach(struct wlan_objmgr_psoc *psoc) { - uint8_t index = 0; - QDF_STATUS status = QDF_STATUS_E_FAILURE; + uint8_t psoc_id; + + psoc_id = psoc->soc_objmgr.psoc_id; + QDF_BUG(psoc_id < WLAN_OBJMGR_MAX_DEVICES); + if (psoc_id >= WLAN_OBJMGR_MAX_DEVICES) + return QDF_STATUS_E_INVAL; qdf_spin_lock_bh(&g_umac_glb_obj->global_lock); - while (index < WLAN_OBJMGR_MAX_DEVICES) { - if (g_umac_glb_obj->psoc[index] == psoc) { - /* found psoc, store NULL */ - g_umac_glb_obj->psoc[index] = NULL; - status = QDF_STATUS_SUCCESS; - break; - } - index++; - } + g_umac_glb_obj->psoc[psoc_id] = NULL; qdf_spin_unlock_bh(&g_umac_glb_obj->global_lock); - return status; + + return QDF_STATUS_SUCCESS; } QDF_STATUS wlan_objmgr_global_obj_can_destroyed(void) 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 94c7b73f075c..7fb6d64de635 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 @@ -169,6 +169,9 @@ struct wlan_objmgr_pdev *wlan_objmgr_pdev_obj_create( wlan_objmgr_pdev_obj_delete(pdev); return NULL; } + + obj_mgr_info("Created pdev %d", pdev->pdev_objmgr.wlan_pdev_id); + return pdev; } EXPORT_SYMBOL(wlan_objmgr_pdev_obj_create); @@ -188,6 +191,8 @@ static QDF_STATUS wlan_objmgr_pdev_obj_destroy(struct wlan_objmgr_pdev *pdev) pdev_id = wlan_objmgr_pdev_get_pdev_id(pdev); + obj_mgr_info("Physically deleting pdev %d", pdev_id); + if (pdev->obj_state != WLAN_OBJ_STATE_LOGICALLY_DELETED) { obj_mgr_err("pdev object delete is not invoked: pdev-id:%d", pdev_id); @@ -233,11 +238,12 @@ QDF_STATUS wlan_objmgr_pdev_obj_delete(struct wlan_objmgr_pdev *pdev) return QDF_STATUS_E_FAILURE; } + obj_mgr_info("Logically deleting pdev %d", + pdev->pdev_objmgr.wlan_pdev_id); + print_idx = qdf_get_pidx(); if (qdf_print_is_verbose_enabled(print_idx, QDF_MODULE_ID_OBJ_MGR, QDF_TRACE_LEVEL_DEBUG)) { - obj_mgr_debug("Logically deleting the pdev(id:%d)", - pdev->pdev_objmgr.wlan_pdev_id); wlan_objmgr_print_ref_ids(pdev->pdev_objmgr.ref_id_dbg); } 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 9f58b26909f3..f21215d7b33d 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 @@ -245,6 +245,10 @@ struct wlan_objmgr_peer *wlan_objmgr_peer_obj_create( wlan_objmgr_peer_obj_delete(peer); return NULL; } + + obj_mgr_debug("Created peer " QDF_MAC_ADDR_STR, + QDF_MAC_ADDR_ARRAY(macaddr)); + return peer; } @@ -263,6 +267,9 @@ static QDF_STATUS wlan_objmgr_peer_obj_destroy(struct wlan_objmgr_peer *peer) macaddr = wlan_peer_get_macaddr(peer); + obj_mgr_debug("Physically deleting peer " QDF_MAC_ADDR_STR, + QDF_MAC_ADDR_ARRAY(macaddr)); + if (peer->obj_state != WLAN_OBJ_STATE_LOGICALLY_DELETED) { obj_mgr_err( "peer(%02x:%02x:%02x:%02x:%02x:%02x) object del is not invoked", @@ -311,14 +318,12 @@ QDF_STATUS wlan_objmgr_peer_obj_delete(struct wlan_objmgr_peer *peer) macaddr = wlan_peer_get_macaddr(peer); wlan_peer_obj_unlock(peer); + obj_mgr_debug("Logically deleting peer " QDF_MAC_ADDR_STR, + QDF_MAC_ADDR_ARRAY(macaddr)); print_idx = qdf_get_pidx(); if (qdf_print_is_verbose_enabled(print_idx, QDF_MODULE_ID_OBJ_MGR, QDF_TRACE_LEVEL_DEBUG)) { - obj_mgr_debug( - "Logically deleting the peer (%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); } 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 95bb8769e432..363407f08290 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 @@ -182,6 +182,8 @@ struct wlan_objmgr_psoc *wlan_objmgr_psoc_obj_create(uint32_t phy_version, return NULL; } + obj_mgr_info("Created psoc %d", psoc->soc_objmgr.psoc_id); + return psoc; } EXPORT_SYMBOL(wlan_objmgr_psoc_obj_create); @@ -198,6 +200,8 @@ static QDF_STATUS wlan_objmgr_psoc_obj_destroy(struct wlan_objmgr_psoc *psoc) return QDF_STATUS_E_FAILURE; } + obj_mgr_info("Physically deleting psoc %d", psoc->soc_objmgr.psoc_id); + if (psoc->obj_state != WLAN_OBJ_STATE_LOGICALLY_DELETED) { obj_mgr_err("psoc object delete is not invoked"); WLAN_OBJMGR_BUG(0); @@ -244,11 +248,11 @@ QDF_STATUS wlan_objmgr_psoc_obj_delete(struct wlan_objmgr_psoc *psoc) return QDF_STATUS_E_FAILURE; } - print_idx = qdf_get_pidx(); + obj_mgr_info("Logically deleting psoc %d", psoc->soc_objmgr.psoc_id); + print_idx = qdf_get_pidx(); if (qdf_print_is_verbose_enabled(print_idx, QDF_MODULE_ID_OBJ_MGR, QDF_TRACE_LEVEL_DEBUG)) { - obj_mgr_debug("Logically deleting the psoc"); wlan_objmgr_print_ref_ids(psoc->soc_objmgr.ref_id_dbg); } 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 656d42b2e841..09d152a111e9 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 @@ -227,6 +227,9 @@ struct wlan_objmgr_vdev *wlan_objmgr_vdev_obj_create( vdev->vdev_objmgr.vdev_id); return NULL; } + + obj_mgr_info("Created vdev %d", vdev->vdev_objmgr.vdev_id); + return vdev; } EXPORT_SYMBOL(wlan_objmgr_vdev_obj_create); @@ -246,6 +249,8 @@ static QDF_STATUS wlan_objmgr_vdev_obj_destroy(struct wlan_objmgr_vdev *vdev) vdev_id = wlan_vdev_get_id(vdev); + obj_mgr_info("Physically deleting vdev %d", vdev_id); + if (vdev->obj_state != WLAN_OBJ_STATE_LOGICALLY_DELETED) { obj_mgr_err("vdev object delete is not invoked: vdev-id:%d", wlan_vdev_get_id(vdev)); @@ -292,11 +297,11 @@ QDF_STATUS wlan_objmgr_vdev_obj_delete(struct wlan_objmgr_vdev *vdev) return QDF_STATUS_E_FAILURE; } + obj_mgr_info("Logically deleting vdev %d", vdev->vdev_objmgr.vdev_id); + print_idx = qdf_get_pidx(); if (qdf_print_is_verbose_enabled(print_idx, QDF_MODULE_ID_OBJ_MGR, QDF_TRACE_LEVEL_DEBUG)) { - obj_mgr_debug("Logically deleting the vdev(id:%d)", - vdev->vdev_objmgr.vdev_id); wlan_objmgr_print_ref_ids(vdev->vdev_objmgr.ref_id_dbg); }