mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-25 22:23:14 -04:00
qcacmn: Add objmgr lifecycle logs
Knowing the current and historical state of high level abstractions in the driver is critical to successful debugging of issues. To assist these efforts, add info-level logs for the following object manager psoc/pdev/vdev/peer lifecycle events. * create * logical destroy * physical destroy Change-Id: Idbb5350e85cb1b452e076a6fece31f83dcc7aafc CRs-Fixed: 2179681
This commit is contained in:
parent
c05285da8a
commit
7229739ec7
6 changed files with 45 additions and 32 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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 <wlan_objmgr_global_obj.h>
|
||||
#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)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue