mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-14 00:24:41 -04:00
qcacmn: Replacing qdf_print with QDF_TRACE
Replace all object manager qdf_prints with obj_mgr_err/obj_mgr_info based on QDF_TRACE with the right log levels. Added additional debug information like Pdev_id Vdev id Peer MAC address Change-Id: I96d96182176d332b9fbdb202305d29c08ddc0d18 CRs-Fixed: 2026537
This commit is contained in:
parent
e43583f3c1
commit
2c86b213c6
9 changed files with 276 additions and 188 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -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" };
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue