diff --git a/qdf/linux/src/qdf_trace.c b/qdf/linux/src/qdf_trace.c index e5312c175382..29a8681c671f 100644 --- a/qdf/linux/src/qdf_trace.c +++ b/qdf/linux/src/qdf_trace.c @@ -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_MBSSIE] = QDF_TRACE_LEVEL_INFO, [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_BSSCOLOR] = QDF_TRACE_LEVEL_ERROR, [QDF_MODULE_ID_ANY] = QDF_TRACE_LEVEL_INFO, diff --git a/umac/mlme/mlme_objmgr/dispatcher/inc/wlan_mlme_dbg.h b/umac/mlme/mlme_objmgr/dispatcher/inc/wlan_mlme_dbg.h index 9ddf168735af..0408235f01ab 100644 --- a/umac/mlme/mlme_objmgr/dispatcher/inc/wlan_mlme_dbg.h +++ b/umac/mlme/mlme_objmgr/dispatcher/inc/wlan_mlme_dbg.h @@ -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 * any purpose with or without fee is hereby granted, provided that the @@ -39,5 +39,20 @@ #define mlme_debug(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_ */ diff --git a/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c b/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c index 666f540d7fd9..e602510201a4 100644 --- a/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c +++ b/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.c @@ -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, false, - "INVALID", + "IDLE", 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); } +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 void mlme_vdev_sm_history_print(struct vdev_mlme_obj *vdev_mlme) { diff --git a/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.h b/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.h index 5a01eba5fa63..7fcb8fe8f663 100644 --- a/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.h +++ b/umac/mlme/vdev_mgr/core/src/vdev_mlme_sm.h @@ -41,6 +41,27 @@ QDF_STATUS mlme_vdev_sm_deliver_event(struct vdev_mlme_obj *vdev_mlme, uint16_t event_data_len, 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 /** * mlme_vdev_sm_history_print() - Prints SM history diff --git a/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mlme_api.c b/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mlme_api.c index 97a0441b456f..b72c4622aace 100644 --- a/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mlme_api.c +++ b/umac/mlme/vdev_mgr/dispatcher/src/wlan_vdev_mlme_api.c @@ -81,6 +81,8 @@ QDF_STATUS wlan_vdev_mlme_sm_deliver_evt(struct wlan_objmgr_vdev *vdev, { struct vdev_mlme_obj *vdev_mlme; 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); 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); + + /* 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, 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); return status;