qcacmn: Optimize VDEV MLME SM prints

Reduced VDEV SM debug level, and added prints for state abd substates at
event handling API

Change-Id: I3076c590131581a8728548592e0a9b4e66db377e
CRs-Fixed: 2394012
This commit is contained in:
Srinivas Pitla
2019-02-22 15:55:05 +05:30
committed by nshrivas
parent e6c7bff8d9
commit 8d19efa7c2
5 changed files with 85 additions and 3 deletions

View File

@@ -3320,7 +3320,7 @@ static void set_default_trace_levels(struct category_info *cinfo)
[QDF_MODULE_ID_CP_STATS] = QDF_TRACE_LEVEL_ERROR, [QDF_MODULE_ID_CP_STATS] = QDF_TRACE_LEVEL_ERROR,
[QDF_MODULE_ID_MBSSIE] = QDF_TRACE_LEVEL_INFO, [QDF_MODULE_ID_MBSSIE] = QDF_TRACE_LEVEL_INFO,
[QDF_MODULE_ID_FWOL] = QDF_TRACE_LEVEL_NONE, [QDF_MODULE_ID_FWOL] = QDF_TRACE_LEVEL_NONE,
[QDF_MODULE_ID_SM_ENGINE] = QDF_TRACE_LEVEL_DEBUG, [QDF_MODULE_ID_SM_ENGINE] = QDF_TRACE_LEVEL_ERROR,
[QDF_MODULE_ID_CMN_MLME] = QDF_TRACE_LEVEL_INFO, [QDF_MODULE_ID_CMN_MLME] = QDF_TRACE_LEVEL_INFO,
[QDF_MODULE_ID_BSSCOLOR] = QDF_TRACE_LEVEL_ERROR, [QDF_MODULE_ID_BSSCOLOR] = QDF_TRACE_LEVEL_ERROR,
[QDF_MODULE_ID_ANY] = QDF_TRACE_LEVEL_INFO, [QDF_MODULE_ID_ANY] = QDF_TRACE_LEVEL_INFO,

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2018 The Linux Foundation. All rights reserved. * Copyright (c) 2018-2019 The Linux Foundation. All rights reserved.
* *
* Permission to use, copy, modify, and/or distribute this software for * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -39,5 +39,20 @@
#define mlme_debug(format, args...) \ #define mlme_debug(format, args...) \
QDF_TRACE_DEBUG(QDF_MODULE_ID_CMN_MLME, format, ## args) QDF_TRACE_DEBUG(QDF_MODULE_ID_CMN_MLME, format, ## args)
#define mlme_nofl_alert(format, args...) \
QDF_TRACE_FATAL_NO_FL(QDF_MODULE_ID_CMN_MLME, format, ## args)
#define mlme_nofl_err(format, args...) \
QDF_TRACE_ERROR_NO_FL(QDF_MODULE_ID_CMN_MLME, format, ## args)
#define mlme_nofl_warn(format, args...) \
QDF_TRACE_WARN_NO_FL(QDF_MODULE_ID_CMN_MLME, format, ## args)
#define mlme_nofl_info(format, args...) \
QDF_TRACE_INFO_NO_FL(QDF_MODULE_ID_CMN_MLME, format, ## args)
#define mlme_nofl_debug(format, args...) \
QDF_TRACE_DEBUG_NO_FL(QDF_MODULE_ID_CMN_MLME, format, ## args)
#endif /* _WLAN_MLME_DBG_H_ */ #endif /* _WLAN_MLME_DBG_H_ */

View File

@@ -1801,7 +1801,7 @@ struct wlan_sm_state_info sm_info[] = {
(uint8_t)WLAN_SM_ENGINE_STATE_NONE, (uint8_t)WLAN_SM_ENGINE_STATE_NONE,
(uint8_t)WLAN_SM_ENGINE_STATE_NONE, (uint8_t)WLAN_SM_ENGINE_STATE_NONE,
false, false,
"INVALID", "IDLE",
NULL, NULL,
NULL, NULL,
NULL, NULL,
@@ -1826,6 +1826,38 @@ QDF_STATUS mlme_vdev_sm_deliver_event(struct vdev_mlme_obj *vdev_mlme,
event_data_len, event_data); event_data_len, event_data);
} }
void mlme_vdev_sm_print_state_event(struct vdev_mlme_obj *vdev_mlme,
enum wlan_vdev_sm_evt event)
{
enum wlan_vdev_state state;
enum wlan_vdev_state substate;
struct wlan_objmgr_vdev *vdev;
vdev = vdev_mlme->vdev;
state = wlan_vdev_mlme_get_state(vdev);
substate = wlan_vdev_mlme_get_substate(vdev);
mlme_nofl_info("[%s]%s - %s, %s", vdev_mlme->sm_hdl->name,
sm_info[state].name, sm_info[substate].name,
vdev_sm_event_names[event]);
}
void mlme_vdev_sm_print_state(struct vdev_mlme_obj *vdev_mlme)
{
enum wlan_vdev_state state;
enum wlan_vdev_state substate;
struct wlan_objmgr_vdev *vdev;
vdev = vdev_mlme->vdev;
state = wlan_vdev_mlme_get_state(vdev);
substate = wlan_vdev_mlme_get_substate(vdev);
mlme_nofl_info("[%s]%s - %s", vdev_mlme->sm_hdl->name,
sm_info[state].name, sm_info[substate].name);
}
#ifdef SM_ENG_HIST_ENABLE #ifdef SM_ENG_HIST_ENABLE
void mlme_vdev_sm_history_print(struct vdev_mlme_obj *vdev_mlme) void mlme_vdev_sm_history_print(struct vdev_mlme_obj *vdev_mlme)
{ {

View File

@@ -41,6 +41,27 @@ QDF_STATUS mlme_vdev_sm_deliver_event(struct vdev_mlme_obj *vdev_mlme,
uint16_t event_data_len, uint16_t event_data_len,
void *event_data); void *event_data);
/**
* mlme_vdev_sm_print_state_event() - Prints the state/substate, event
* @vdev_mlme: MLME VDEV comp object
* @event: MLME event
*
* API to print current state/substate, events in readable format
*
* Return: void
*/
void mlme_vdev_sm_print_state_event(struct vdev_mlme_obj *vdev_mlme,
enum wlan_vdev_sm_evt event);
/**
* mlme_vdev_sm_print_state_event() - Prints the state/substate
* @vdev_mlme: MLME VDEV comp object
*
* API to print current state/substate
*
* Return: void
*/
void mlme_vdev_sm_print_state(struct vdev_mlme_obj *vdev_mlme);
#ifdef SM_ENG_HIST_ENABLE #ifdef SM_ENG_HIST_ENABLE
/** /**
* mlme_vdev_sm_history_print() - Prints SM history * mlme_vdev_sm_history_print() - Prints SM history

View File

@@ -81,6 +81,8 @@ QDF_STATUS wlan_vdev_mlme_sm_deliver_evt(struct wlan_objmgr_vdev *vdev,
{ {
struct vdev_mlme_obj *vdev_mlme; struct vdev_mlme_obj *vdev_mlme;
QDF_STATUS status; QDF_STATUS status;
enum wlan_vdev_state state_entry, state_exit;
enum wlan_vdev_state substate_entry, substate_exit;
vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev); vdev_mlme = wlan_vdev_mlme_get_cmpt_obj(vdev);
if (!vdev_mlme) { if (!vdev_mlme) {
@@ -89,8 +91,20 @@ QDF_STATUS wlan_vdev_mlme_sm_deliver_evt(struct wlan_objmgr_vdev *vdev,
} }
mlme_vdev_sm_spin_lock(vdev_mlme); mlme_vdev_sm_spin_lock(vdev_mlme);
/* store entry state and sub state for prints */
state_entry = wlan_vdev_mlme_get_state(vdev);
substate_entry = wlan_vdev_mlme_get_substate(vdev);
mlme_vdev_sm_print_state_event(vdev_mlme, event);
status = mlme_vdev_sm_deliver_event(vdev_mlme, event, event_data_len, status = mlme_vdev_sm_deliver_event(vdev_mlme, event, event_data_len,
event_data); event_data);
/* Take exit state, exit substate for prints */
state_exit = wlan_vdev_mlme_get_state(vdev);
substate_exit = wlan_vdev_mlme_get_substate(vdev);
/* If no state and substate change, don't print */
if (!((state_entry == state_exit) && (substate_entry == substate_exit)))
mlme_vdev_sm_print_state(vdev_mlme);
mlme_vdev_sm_spin_unlock(vdev_mlme); mlme_vdev_sm_spin_unlock(vdev_mlme);
return status; return status;