blob: fec058bb62b7c7261d01ff574b47df8e743544a1 [file] [log] [blame]
/*
* Copyright (c) 2015, 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 above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/
#include "core.h"
#include "debug.h"
#define FW_DBGLOG_TIMESTAMP_OFFSET 0
#define FW_DBGLOG_TIMESTAMP_MASK 0xFFFFFFFF /* Bit 0-15. Contains bit
8-23 of the LF0 timer */
#define FW_DBGLOG_DBGID_OFFSET 0
#define FW_DBGLOG_DBGID_MASK 0x000003FF /* Bit 0-9 */
#define FW_DBGLOG_DBGID_NUM_MAX 256 /* Upper limit is width of mask */
#define FW_DBGLOG_MODULEID_OFFSET 10
#define FW_DBGLOG_MODULEID_MASK 0x0003FC00 /* Bit 10-17 */
#define FW_DBGLOG_MODULEID_NUM_MAX 32 /* Upper limit is width of mask */
#define FW_DBGLOG_VAPID_OFFSET 18
#define FW_DBGLOG_VAPID_MASK 0x03FC0000 /* Bit 20-25*/
#define FW_DBGLOG_VAPID_NUM_MAX 16
#define FW_DBGLOG_NUM_ARGS_OFFSET 26
#define FW_DBGLOG_NUM_ARGS_MASK 0xFC000000 /* Bit 26-31 */
#define FW_DBGLOG_NUM_ARGS_MAX 5 /* it is limited bcoz of limitatios
with Xtensa tool */
#define FW_DBGLOG_GET_DBGID(arg) \
((arg & FW_DBGLOG_DBGID_MASK) >> FW_DBGLOG_DBGID_OFFSET)
#define FW_DBGLOG_GET_MODULEID(arg) \
((arg & FW_DBGLOG_MODULEID_MASK) >> FW_DBGLOG_MODULEID_OFFSET)
#define FW_DBGLOG_GET_VAPID(arg) \
((arg & FW_DBGLOG_VAPID_MASK) >> FW_DBGLOG_VAPID_OFFSET)
#define FW_DBGLOG_GET_NUMARGS(arg) \
((arg & FW_DBGLOG_NUM_ARGS_MASK) >> FW_DBGLOG_NUM_ARGS_OFFSET)
#define FW_DBGLOG_GET_TIME_STAMP(arg) \
((arg & FW_DBGLOG_TIMESTAMP_MASK) >> FW_DBGLOG_TIMESTAMP_OFFSET)
#define ATH10K_FWLOG_MAX_EVT_QUEUE 100
#define FW_DBGLOG_PRINT_PREFIX "FWLOG: "
#define MAX_DBG_MSGS 256
typedef enum {
WLAN_MODULE_ID_MIN = 0,
WLAN_MODULE_INF = WLAN_MODULE_ID_MIN,
WLAN_MODULE_WMI,
WLAN_MODULE_STA_PWRSAVE,
WLAN_MODULE_WHAL,
WLAN_MODULE_COEX,
WLAN_MODULE_ROAM,
WLAN_MODULE_RESMGR_CHAN_MANAGER,
WLAN_MODULE_RESMGR_OCS,
WLAN_MODULE_VDEV_MGR,
WLAN_MODULE_SCAN,
WLAN_MODULE_RATECTRL,
WLAN_MODULE_AP_PWRSAVE,
WLAN_MODULE_BLOCKACK,
WLAN_MODULE_MGMT_TXRX,
WLAN_MODULE_DATA_TXRX,
WLAN_MODULE_HTT,
WLAN_MODULE_HOST,
WLAN_MODULE_BEACON,
WLAN_MODULE_OFFLOAD,
WLAN_MODULE_WAL,
WAL_MODULE_DE,
WLAN_MODULE_PCIELP,
WLAN_MODULE_RTT,
WLAN_MODULE_RESOURCE,
WLAN_MODULE_DCS,
WLAN_MODULE_ANI,
WLAN_MODULE_CACHEMGR,
WLAN_MODULE_DEBUG,
WLAN_MODULE_ID_MAX,
WLAN_MODULE_ID_INVALID = WLAN_MODULE_ID_MAX,
} WLAN_MODULE_ID;
typedef enum {
/* Add various modules supported by 10.4 fw
* when module IDs are needed to be used
*/
WLAN_10_4_MODULE_ID_MAX = 35,
WLAN_10_4_MODULE_ID_INVALID = WLAN_10_4_MODULE_ID_MAX,
} WLAN_10_4_MODULE_ID;
char * DBG_MSG_ARR[WLAN_MODULE_ID_MAX][MAX_DBG_MSGS] =
{
{
"INF_MSG_START",
"INF_ASSERTION_FAILED",
"INF_TARGET_ID",
"INF_MSG_END"
},
{
"WMI_DBGID_DEFINITION_START",
"WMI_CMD_RX_XTND_PKT_TOO_SHORT",
"WMI_EXTENDED_CMD_NOT_HANDLED",
"WMI_CMD_RX_PKT_TOO_SHORT",
"WMI_CALLING_WMI_EXTENSION_FN",
"WMI_CMD_NOT_HANDLED",
"WMI_IN_SYNC",
"WMI_TARGET_WMI_SYNC_CMD",
"WMI_SET_SNR_THRESHOLD_PARAMS",
"WMI_SET_RSSI_THRESHOLD_PARAMS",
"WMI_SET_LQ_TRESHOLD_PARAMS",
"WMI_TARGET_CREATE_PSTREAM_CMD",
"WMI_WI_DTM_INUSE",
"WMI_TARGET_DELETE_PSTREAM_CMD",
"WMI_TARGET_IMPLICIT_DELETE_PSTREAM_CMD",
"WMI_TARGET_GET_BIT_RATE_CMD",
"WMI_GET_RATE_MASK_CMD_FIX_RATE_MASK_IS",
"WMI_TARGET_GET_AVAILABLE_CHANNELS_CMD",
"WMI_TARGET_GET_TX_PWR_CMD",
"WMI_FREE_EVBUF_WMIBUF",
"WMI_FREE_EVBUF_DATABUF",
"WMI_FREE_EVBUF_BADFLAG",
"WMI_HTC_RX_ERROR_DATA_PACKET",
"WMI_HTC_RX_SYNC_PAUSING_FOR_MBOX",
"WMI_INCORRECT_WMI_DATA_HDR_DROPPING_PKT",
"WMI_SENDING_READY_EVENT",
"WMI_SETPOWER_MDOE_TO_MAXPERF",
"WMI_SETPOWER_MDOE_TO_REC",
"WMI_BSSINFO_EVENT_FROM",
"WMI_TARGET_GET_STATS_CMD",
"WMI_SENDING_SCAN_COMPLETE_EVENT",
"WMI_SENDING_RSSI_INDB_THRESHOLD_EVENT ",
"WMI_SENDING_RSSI_INDBM_THRESHOLD_EVENT",
"WMI_SENDING_LINK_QUALITY_THRESHOLD_EVENT",
"WMI_SENDING_ERROR_REPORT_EVENT",
"WMI_SENDING_CAC_EVENT",
"WMI_TARGET_GET_ROAM_TABLE_CMD",
"WMI_TARGET_GET_ROAM_DATA_CMD",
"WMI_SENDING_GPIO_INTR_EVENT",
"WMI_SENDING_GPIO_ACK_EVENT",
"WMI_SENDING_GPIO_DATA_EVENT",
"WMI_CMD_RX",
"WMI_CMD_RX_XTND",
"WMI_EVENT_SEND",
"WMI_EVENT_SEND_XTND",
"WMI_CMD_PARAMS_DUMP_START",
"WMI_CMD_PARAMS_DUMP_END",
"WMI_CMD_PARAMS",
"WMI_EVENT_ALLOC_FAILURE",
"WMI_DBGID_DCS_PARAM_CMD",
"WMI_DBGOD_DEFNITION_END",
},
{
"PS_STA_DEFINITION_START",
"PS_STA_PM_ARB_REQUEST",
},
{
"WHAL_DBGID_DEFINITION_START",
"WHAL_ERROR_ANI_CONTROL",
"WHAL_ERROR_CHIP_TEST1",
"WHAL_ERROR_CHIP_TEST2",
"WHAL_ERROR_EEPROM_CHECKSUM",
"WHAL_ERROR_EEPROM_MACADDR",
"WHAL_ERROR_INTERRUPT_HIU",
"WHAL_ERROR_KEYCACHE_RESET",
"WHAL_ERROR_KEYCACHE_SET",
"WHAL_ERROR_KEYCACHE_TYPE",
"WHAL_ERROR_KEYCACHE_TKIPENTRY",
"WHAL_ERROR_KEYCACHE_WEPLENGTH",
"WHAL_ERROR_PHY_INVALID_CHANNEL",
"WHAL_ERROR_POWER_AWAKE",
"WHAL_ERROR_POWER_SET",
"WHAL_ERROR_RECV_STOPDMA",
"WHAL_ERROR_RECV_STOPPCU",
"WHAL_ERROR_RESET_CHANNF1",
"WHAL_ERROR_RESET_CHANNF2",
"WHAL_ERROR_RESET_PM",
"WHAL_ERROR_RESET_OFFSETCAL",
"WHAL_ERROR_RESET_RFGRANT",
"WHAL_ERROR_RESET_RXFRAME",
"WHAL_ERROR_RESET_STOPDMA",
"WHAL_ERROR_RESET_ERRID",
"WHAL_ERROR_RESET_ADCDCCAL1",
"WHAL_ERROR_RESET_ADCDCCAL2",
"WHAL_ERROR_RESET_TXIQCAL",
"WHAL_ERROR_RESET_RXIQCAL",
"WHAL_ERROR_RESET_CARRIERLEAK",
"WHAL_ERROR_XMIT_COMPUTE",
"WHAL_ERROR_XMIT_NOQUEUE",
"WHAL_ERROR_XMIT_ACTIVEQUEUE",
"WHAL_ERROR_XMIT_BADTYPE",
"WHAL_ERROR_XMIT_STOPDMA",
"WHAL_ERROR_INTERRUPT_BB_PANIC",
"WHAL_ERROR_PAPRD_MAXGAIN_ABOVE_WINDOW",
"WHAL_SMARTANT_CONFIGURE",
"WHAL_SMARTANT_RXANTENNA",
"WHAL_TX_ENQUEUE",
"WHAL_COEX_RESET",
"WHAL_COEX_SELF_GEN_MASK",
"WHAL_ERROR_COEX_MCI_ISR",
"WHAL_COEX_MCI_ISR_IntRaw",
"WHAL_COEX_MCI_ISR_Int1Raw",
"WHAL_COEX_MCI_ISR_RxMsgRaw",
"WHAL_COEX_SENDMSG_QUEUE",
"WHAL_COEX_TX_MCI_REMOTE_RESET",
"WHAL_COEX_TX_MCI_TYPE_UNKNOWN",
"WHAL_COEX_TX_MCI_SYS_SLEEPING",
"WHAL_COEX_TX_MCI_REQ_WAKE",
"WHAL_COEX_TX_MCI_SYS_WAKING",
"WHAL_COEX_TX_MCI_LNA_TAKE",
"WHAL_COEX_TX_MCI_LNA_TRANS",
"WHAL_COEX_TX_MCI_GPM_UNKNOWN",
"WHAL_COEX_TX_MCI_GPM_WLAN_SET_ACL_INACTIVITY",
"WHAL_COEX_TX_MCI_GPM_BT_PAUSE_PROFILE",
"WHAL_COEX_TX_MCI_GPM_WLAN_PRIO",
"WHAL_COEX_TX_MCI_GPM_BT_STATUS_UPDATE",
"WHAL_COEX_TX_MCI_GPM_BT_UPDATE_FLAGS",
"WHAL_COEX_TX_MCI_GPM_VERSION_QUERY",
"WHAL_COEX_TX_MCI_GPM_VERSION_RESPONSE",
"WHAL_COEX_TX_MCI_GPM_STATUS_QUERY",
"WHAL_COEX_TX_MCI_GPM_HALT_BT_GPM",
"WHAL_COEX_TX_MCI_GPM_WLAN_CHANNELS",
"WHAL_COEX_TX_MCI_GPM_BT_PROFILE_INFO",
"WHAL_COEX_TX_MCI_GPM_BT_CAL_REQ ",
"WHAL_COEX_TX_MCI_GPM_BT_CAL_GRANT",
"WHAL_COEX_TX_MCI_GPM_BT_CAL_DONE",
"WHAL_COEX_TX_MCI_GPM_WLAN_CAL_REQ",
"WHAL_COEX_TX_MCI_GPM_WLAN_CAL_GRANT",
"WHAL_COEX_TX_MCI_GPM_WLAN_CAL_DONE",
"WHAL_COEX_TX_MCI_GPM_BT_DEBUG",
"WHAL_COEX_WHAL_MCI_RESET",
"WHAL_COEX_POLL_BT_CAL_DONE_TIMEOUT",
"WHAL_COEX_WHAL_PAUSE",
"WHAL_COEX_RX_MCI_GPM_BT_CAL_REQ",
"WHAL_COEX_RX_MCI_GPM_BT_CAL_DONE",
"WHAL_COEX_RX_MCI_GPM_BT_CAL_GRANT",
"WHAL_COEX_WLAN_CAL_START",
"WHAL_COEX_WLAN_CAL_RESULT ",
"WHAL_COEX_BtMciState",
"WHAL_COEX_BtCalState",
"WHAL_COEX_WlanCalState",
"WHAL_COEX_RxReqWakeCount",
"WHAL_COEX_RxRemoteResetCount",
"WHAL_COEX_RESTART_CAL",
"WHAL_COEX_WHAL_COEX_RESET",
"WHAL_COEX_SELF_GEN_MASK",
"WHAL_DBGID_DEFINITION_END"
},
{
"COEX_DEBUGID_START",
"BTCOEX_DBG_MCI_1",
"BTCOEX_DBG_MCI_2",
"BTCOEX_DBG_MCI_3",
"BTCOEX_DBG_MCI_4",
"BTCOEX_DBG_MCI_5",
"BTCOEX_DBG_MCI_6",
"BTCOEX_DBG_MCI_7",
"BTCOEX_DBG_MCI_8",
"BTCOEX_DBG_MCI_9",
"BTCOEX_DBG_MCI_10",
"COEX_WAL_BTCOEX_INIT",
"COEX_WAL_PAUSE",
"COEX_WAL_RESUME",
"COEX_UPDATE_AFH",
"COEX_HWQ_EMPTY_CB",
"COEX_MCI_TIMER_HANDLER",
"COEX_MCI_RECOVER",
"ERROR_COEX_MCI_ISR",
"ERROR_COEX_MCI_GPM",
"COEX_ProfileType",
"COEX_LinkID",
"COEX_LinkState",
"COEX_LinkRole",
"COEX_LinkRate",
"COEX_VoiceType",
"COEX_TInterval",
"COEX_WRetrx",
"COEX_Attempts",
"COEX_PerformanceState",
"COEX_LinkType",
"COEX_RX_MCI_GPM_VERSION_QUERY",
"COEX_RX_MCI_GPM_VERSION_RESPONSE",
"COEX_RX_MCI_GPM_STATUS_QUERY",
"COEX_STATE_WLAN_VDEV_DOWN",
"COEX_STATE_WLAN_VDEV_START",
"COEX_STATE_WLAN_VDEV_CONNECTED",
"COEX_STATE_WLAN_VDEV_SCAN_STARTED",
"COEX_STATE_WLAN_VDEV_SCAN_END",
"COEX_STATE_WLAN_DEFAULT",
"COEX_CHANNEL_CHANGE",
"COEX_POWER_CHANGE",
"COEX_CONFIG_MGR",
"COEX_TX_MCI_GPM_BT_CAL_REQ",
"COEX_TX_MCI_GPM_BT_CAL_GRANT",
"COEX_TX_MCI_GPM_BT_CAL_DONE",
"COEX_TX_MCI_GPM_WLAN_CAL_REQ",
"COEX_TX_MCI_GPM_WLAN_CAL_GRANT",
"COEX_TX_MCI_GPM_WLAN_CAL_DONE",
"COEX_TX_MCI_GPM_BT_DEBUG",
"COEX_TX_MCI_GPM_VERSION_QUERY",
"COEX_TX_MCI_GPM_VERSION_RESPONSE",
"COEX_TX_MCI_GPM_STATUS_QUERY",
"COEX_TX_MCI_GPM_HALT_BT_GPM",
"COEX_TX_MCI_GPM_WLAN_CHANNELS",
"COEX_TX_MCI_GPM_BT_PROFILE_INFO",
"COEX_TX_MCI_GPM_BT_STATUS_UPDATE",
"COEX_TX_MCI_GPM_BT_UPDATE_FLAGS",
"COEX_TX_MCI_GPM_UNKNOWN",
"COEX_TX_MCI_SYS_WAKING",
"COEX_TX_MCI_LNA_TAKE",
"COEX_TX_MCI_LNA_TRANS",
"COEX_TX_MCI_SYS_SLEEPING",
"COEX_TX_MCI_REQ_WAKE",
"COEX_TX_MCI_REMOTE_RESET",
"COEX_TX_MCI_TYPE_UNKNOWN",
"COEX_WHAL_MCI_RESET",
"COEX_POLL_BT_CAL_DONE_TIMEOUT",
"COEX_WHAL_PAUSE",
"COEX_RX_MCI_GPM_BT_CAL_REQ",
"COEX_RX_MCI_GPM_BT_CAL_DONE",
"COEX_RX_MCI_GPM_BT_CAL_GRANT",
"COEX_WLAN_CAL_START",
"COEX_WLAN_CAL_RESULT",
"COEX_BtMciState",
"COEX_BtCalState",
"COEX_WlanCalState",
"COEX_RxReqWakeCount",
"COEX_RxRemoteResetCount",
"COEX_RESTART_CAL",
"COEX_SENDMSG_QUEUE",
"COEX_RESETSEQ_LNAINFO_TIMEOUT",
"COEX_MCI_ISR_IntRaw",
"COEX_MCI_ISR_Int1Raw",
"COEX_MCI_ISR_RxMsgRaw",
"COEX_WHAL_COEX_RESET",
"COEX_WAL_COEX_INIT",
"COEX_TXRX_CNT_LIMIT_ISR",
"COEX_CH_BUSY",
"COEX_REASSESS_WLAN_STATE",
"COEX_BTCOEX_WLAN_STATE_UPDATE",
"COEX_BT_NUM_OF_PROFILES",
"COEX_BT_NUM_OF_HID_PROFILES",
"COEX_BT_NUM_OF_ACL_PROFILES",
"COEX_BT_NUM_OF_HI_ACL_PROFILES",
"COEX_BT_NUM_OF_VOICE_PROFILES",
"COEX_WLAN_AGGR_LIMIT",
"COEX_BT_LOW_PRIO_BUDGET",
"COEX_BT_HI_PRIO_BUDGET",
"COEX_BT_IDLE_TIME",
"COEX_SET_COEX_WEIGHT",
"COEX_WLAN_WEIGHT_GROUP",
"COEX_BT_WEIGHT_GROUP",
"COEX_BT_INTERVAL_ALLOC",
"COEX_BT_SCHEME",
"COEX_BT_MGR",
"COEX_BT_SM_ERROR",
"COEX_SYSTEM_UPDATE",
"COEX_LOW_PRIO_LIMIT",
"COEX_HI_PRIO_LIMIT",
"COEX_BT_INTERVAL_START",
"COEX_WLAN_INTERVAL_START",
"COEX_NON_LINK_BUDGET",
"COEX_CONTENTION_MSG",
"COEX_SET_NSS",
"COEX_SELF_GEN_MASK",
"COEX_PROFILE_ERROR",
"COEX_WLAN_INIT",
"COEX_BEACON_MISS",
"COEX_BEACON_OK",
"COEX_BTCOEX_SCAN_ACTIVITY",
"COEX_SCAN_ACTIVITY",
"COEX_FORCE_QUIETTIME",
"COEX_BT_MGR_QUIETTIME",
"COEX_BT_INACTIVITY_TRIGGER",
"COEX_BT_INACTIVITY_REPORTED",
"COEX_TX_MCI_GPM_WLAN_PRIO",
"COEX_TX_MCI_GPM_BT_PAUSE_PROFILE",
"COEX_TX_MCI_GPM_WLAN_SET_ACL_INACTIVITY",
"COEX_RX_MCI_GPM_BT_ACL_INACTIVITY_REPORT",
"COEX_GENERIC_ERROR",
"COEX_RX_RATE_THRESHOLD",
"COEX_RSSI",
"COEX_WLAN_VDEV_NOTIF_START", // 133
"COEX_WLAN_VDEV_NOTIF_UP", // 134
"COEX_WLAN_VDEV_NOTIF_DOWN", // 135
"COEX_WLAN_VDEV_NOTIF_STOP", // 136
"COEX_WLAN_VDEV_NOTIF_ADD_PEER", // 137
"COEX_WLAN_VDEV_NOTIF_DELETE_PEER", // 138
"COEX_WLAN_VDEV_NOTIF_CONNECTED_PEER", // 139
"COEX_WLAN_VDEV_NOTIF_PAUSE", // 140
"COEX_WLAN_VDEV_NOTIF_UNPAUSED", // 141
"COEX_STATE_WLAN_VDEV_PEER_ADD", // 142
"COEX_STATE_WLAN_VDEV_CONNECTED_PEER", // 143
"COEX_STATE_WLAN_VDEV_DELETE_PEER", // 144
"COEX_STATE_WLAN_VDEV_PAUSE", // 145
"COEX_STATE_WLAN_VDEV_UNPAUSED", // 146
"COEX_SCAN_CALLBACK", // 147
"COEX_DEBUG_MESSAGE_END"
},
{
"RO_DBGID_DEFINITION_START",
"RO_REFRESH_ROAM_TABLE",
"RO_UPDATE_ROAM_CANDIDATE",
"RO_UPDATE_ROAM_CANDIDATE_CB",
"RO_UPDATE_ROAM_CANDIDATE_FINISH",
"RO_REFRESH_ROAM_TABLE_DONE",
"RO_PERIODIC_SEARCH_CB",
"RO_PERIODIC_SEARCH_TIMEOUT",
"RO_INIT",
"RO_BMISS_STATE1",
"RO_BMISS_STATE2",
"RO_SET_PERIODIC_SEARCH_ENABLE",
"RO_SET_PERIODIC_SEARCH_DISABLE",
"RO_ENABLE_SQ_THRESHOLD",
"RO_DISABLE_SQ_THRESHOLD",
"RO_ADD_BSS_TO_ROAM_TABLE",
"RO_SET_PERIODIC_SEARCH_MODE",
"RO_CONFIGURE_SQ_THRESHOLD1",
"RO_CONFIGURE_SQ_THRESHOLD2",
"RO_CONFIGURE_SQ_PARAMS",
"RO_LOW_SIGNAL_QUALITY_EVENT",
"RO_HIGH_SIGNAL_QUALITY_EVENT",
"RO_REMOVE_BSS_FROM_ROAM_TABLE",
"RO_UPDATE_CONNECTION_STATE_METRIC",
"RO_LOWRSSI_SCAN_PARAMS",
"RO_LOWRSSI_SCAN_START",
"RO_LOWRSSI_SCAN_END",
"RO_LOWRSSI_SCAN_CANCEL",
"RO_LOWRSSI_ROAM_CANCEL",
"RO_REFRESH_ROAM_CANDIDATE",
"RO_DBGID_DEFINITION_END"
},
{
"RESMGR_CHMGR_DEFINITION_START",
"RESMGR_CHMGR_PAUSE_COMPLETE",
"RESMGR_CHMGR_CHANNEL_CHANGE",
"RESMGR_CHMGR_RESUME_COMPLETE",
"RESMGR_CHMGR_VDEV_PAUSE",
"RESMGR_CHMGR_VDEV_UNPAUSE",
"RESMGR_CHMGR_DEFINITION_END"
},
{
"RESMGR_OCS_DEFINITION_START",
"RESMGR_OCS_ALLOCRAM_SIZE",
"RESMGR_OCS_RESOURCES",
"RESMGR_OCS_LINK_CREATE",
"RESMGR_OCS_LINK_DELETE",
"RESMGR_OCS_CHREQ_CREATE",
"RESMGR_OCS_CHREQ_DELETE",
"RESMGR_OCS_CHREQ_START",
"RESMGR_OCS_CHREQ_STOP",
"RESMGR_OCS_SCHEDULER_INVOKED",
"RESMGR_OCS_CHREQ_GRANT",
"RESMGR_OCS_CHREQ_COMPLETE",
"RESMGR_OCS_NEXT_TSFTIME",
"RESMGR_OCS_TSF_TIMEOUT_US",
"RESMGR_OCS_CURR_CAT_WINDOW",
"RESMGR_OCS_CURR_CAT_WINDOW_REQ",
"RESMGR_OCS_CURR_CAT_WINDOW_TIMESLOT",
"RESMGR_OCS_CHREQ_RESTART",
"RESMGR_OCS_CLEANUP_CH_ALLOCATORS",
"RESMGR_OCS_PURGE_CHREQ",
"RESMGR_OCS_CH_ALLOCATOR_FREE",
"RESMGR_OCS_RECOMPUTE_SCHEDULE",
"RESMGR_OCS_NEW_CAT_WINDOW_REQ",
"RESMGR_OCS_NEW_CAT_WINDOW_TIMESLOT",
"RESMGR_OCS_CUR_CH_ALLOC",
"RESMGR_OCS_WIN_CH_ALLOC",
"RESMGR_OCS_SCHED_CH_CHANGE",
"RESMGR_OCS_CONSTRUCT_CAT_WIN",
"RESMGR_OCS_CHREQ_PREEMPTED",
"RESMGR_OCS_CH_SWITCH_REQ",
"RESMGR_OCS_CHANNEL_SWITCHED",
"RESMGR_OCS_CLEANUP_STALE_REQS",
"RESMGR_OCS_DEFINITION_END"
},
{
"VDEV_MGR_DEBID_DEFINITION_START", /* vdev Mgr */
"VDEV_MGR_BEACON_MISS_TIMER_TIMEOUT",
"VDEV_MGR_BEACON_MISS_DETECTED",
"VDEV_MGR_BEACON_IN_SYNC",
"VDEV_MGR_AP_KEEPALIVE_IDLE",
"VDEV_MGR_AP_KEEPALIVE_INACTIVE",
"VDEV_MGR_AP_KEEPALIVE_UNRESPONSIVE",
},
{
"SCAN_START_COMMAND_FAILED", /* scan */
"SCAN_STOP_COMMAND_FAILED",
"SCAN_EVENT_SEND_FAILED",
},
{ "RATECTRL_DBGID_DEFINITION_START", /* Rate ctrl*/
"RATECTRL_DBGID_ASSOC",
"RATECTRL_DBGID_NSS_CHANGE",
"RATECTRL_DBGID_CHAINMASK_ERR",
"RATECTRL_DBGID_UNEXPECTED_FRAME",
"RATECTRL_DBGID_WAL_RCQUERY",
"RATECTRL_DBGID_WAL_RCUPDATE",
"RATECTRL_DBGID_DEFINITION_END",
},
{
"AP_PS_DBGID_DEFINITION_START",
"AP_PS_DBGID_UPDATE_TIM",
"AP_PS_DBGID_PEER_STATE_CHANGE",
"AP_PS_DBGID_PSPOLL",
"AP_PS_DBGID_PEER_CREATE",
"AP_PS_DBGID_PEER_DELETE",
"AP_PS_DBGID_VDEV_CREATE",
"AP_PS_DBGID_VDEV_DELETE",
"AP_PS_DBGID_SYNC_TIM",
"AP_PS_DBGID_NEXT_RESPONSE",
"AP_PS_DBGID_START_SP",
"AP_PS_DBGID_COMPLETED_EOSP",
"AP_PS_DBGID_TRIGGER",
"AP_PS_DBGID_DUPLICATE_TRIGGER",
"AP_PS_DBGID_UAPSD_RESPONSE",
"AP_PS_DBGID_SEND_COMPLETE",
"AP_PS_DBGID_SEND_N_COMPLETE",
},
{
"" /* Block Ack */
},
{
"" /* Mgmt TxRx */
},
{ "" /* Data TxRx */
},
{ "" /* HTT */
},
{ "" /* HOST */
},
{ "" /* BEACON */
"BEACON_EVENT_SWBA_SEND_FAILED",
},
{ /* Offload Mgr */
"OFFLOAD_MGR_DBGID_DEFINITION_START",
"OFFLOADMGR_REGISTER_OFFLOAD",
"OFFLOADMGR_DEREGISTER_OFFLOAD",
"OFFLOADMGR_NO_REG_DATA_HANDLERS",
"OFFLOADMGR_NO_REG_EVENT_HANDLERS",
"OFFLOADMGR_REG_OFFLOAD_FAILED",
"OFFLOADMGR_DBGID_DEFINITION_END",
},
{
"WAL_DBGID_DEFINITION_START",
"WAL_DBGID_FAST_WAKE_REQUEST",
"WAL_DBGID_FAST_WAKE_RELEASE",
"WAL_DBGID_SET_POWER_STATE",
"WAL_DBGID_MISSING",
"WAL_DBGID_CHANNEL_CHANGE_FORCE_RESET",
"WAL_DBGID_CHANNEL_CHANGE",
"WAL_DBGID_VDEV_START",
"WAL_DBGID_VDEV_STOP",
"WAL_DBGID_VDEV_UP",
"WAL_DBGID_VDEV_DOWN",
"WAL_DBGID_SW_WDOG_RESET",
"WAL_DBGID_TX_SCH_REGISTER_TIDQ",
"WAL_DBGID_TX_SCH_UNREGISTER_TIDQ",
"WAL_DBGID_TX_SCH_TICKLE_TIDQ",
"WAL_DBGID_XCESS_FAILURES",
"WAL_DBGID_AST_ADD_WDS_ENTRY",
"WAL_DBGID_AST_DEL_WDS_ENTRY",
"WAL_DBGID_AST_WDS_ENTRY_PEER_CHG",
"WAL_DBGID_AST_WDS_SRC_LEARN_FAIL",
"WAL_DBGID_STA_KICKOUT",
"WAL_DBGID_BAR_TX_FAIL",
"WAL_DBGID_BAR_ALLOC_FAIL",
"WAL_DBGID_LOCAL_DATA_TX_FAIL",
"WAL_DBGID_SECURITY_PM4_QUEUED",
"WAL_DBGID_SECURITY_GM1_QUEUED",
"WAL_DBGID_SECURITY_PM4_SENT",
"WAL_DBGID_SECURITY_ALLOW_DATA",
"WAL_DBGID_SECURITY_UCAST_KEY_SET",
"WAL_DBGID_SECURITY_MCAST_KEY_SET",
"WAL_DBGID_SECURITY_ENCR_EN",
"WAL_DBGID_BB_WDOG_TRIGGERED",
"WAL_DBGID_RX_LOCAL_BUFS_LWM",
"WAL_DBGID_RX_LOCAL_DROP_LARGE_MGMT",
"WAL_DBGID_VHT_ILLEGAL_RATE_PHY_ERR_DETECTED",
"WAL_DBGID_DEV_RESET",
"WAL_DBGID_TX_BA_SETUP",
"WAL_DBGID_RX_BA_SETUP",
"WAL_DBGID_DEV_TX_TIMEOUT",
"WAL_DBGID_DEV_RX_TIMEOUT",
"WAL_DBGID_STA_VDEV_XRETRY",
"WAL_DBGID_DCS",
"WAL_DBGID_HCM_BIN",
"WAL_DBGID_HCM_BIN_PENALIZE",
"WAL_DBGID_HCM_BIN_DEPENALIZE",
"WAL_DBGID_AST_UPDATE_WDS_ENTRY",
"WAL_DBGID_PEER_EXT_STATS",
"WAL_DBGID_TX_AC_BUFFER_SET",
"WAL_DBGID_AST_ENTRY_EXIST",
"WAL_DBGID_AST_ENTRY_FULL",
"WAL_DBGID_SET_HW_FILTER",
"WAL_DBGID_TX_PPDU_COMP_ERR",
"WAL_DBGID_TX_ENC_KEY_DROP",
"WAL_DBGID_PDEV_INFO_PRINT",
"WAL_DBGID_VDEV_INFO_PRINT",
"WAL_DBGID_DEFINITION_END",
},
{
"" /* DE */
},
{
"" /* pcie lp */
},
{
"" /* RTT */
},
{ /* RESOURCE */
"RESOURCE_DBGID_DEFINITION_START",
"RESOURCE_PEER_ALLOC",
"RESOURCE_PEER_FREE",
"RESOURCE_PEER_ALLOC_WAL_PEER",
"RESOURCE_DBGID_DEFINITION_END",
},
{ /* DCS */
"WLAN_DCS_DBGID_INIT",
"WLAN_DCS_DBGID_WMI_CWINT",
"WLAN_DCS_DBGID_TIMER",
"WLAN_DCS_DBGID_CMDG",
"WLAN_DCS_DBGID_CMDS",
"WLAN_DCS_DBGID_DINIT"
},
{ /* ANI */
"ANI_DBGID_POLL",
"ANI_DBGID_CONTROL",
"ANI_DBGID_OFDM_PARAMS",
"ANI_DBGID_CCK_PARAMS",
"ANI_DBGID_RESET",
"ANI_DBGID_RESTART",
"ANI_DBGID_OFDM_LEVEL",
"ANI_DBGID_CCK_LEVEL",
"ANI_DBGID_FIRSTEP",
"ANI_DBGID_CYCPWR",
"ANI_DBGID_MRC_CCK",
"ANI_DBGID_SELF_CORR_LOW",
"ANI_DBGID_ENABLE",
"ANI_DBGID_CURRENT_LEVEL",
"ANI_DBGID_POLL_PERIOD",
"ANI_DBGID_LISTEN_PERIOD",
"ANI_DBGID_OFDM_LEVEL_CFG",
"ANI_DBGID_CCK_LEVEL_CFG",
},
{
"" /* CACHEMGR */
},
{ /* DEBUG */
"WLAN_DEBUG_MODULE_DBGID_START",
"WLAN_DEBUG_DBGID_PEER",
"WLAN_DEBUG_DBGID_PDEV",
"WLAN_DEBUG_DBGID_VDEV",
"WLAN_DEBUG_MODULE_DBGID_END",
},
};
char *FW_10_4_DBG_MSG_ARR[WLAN_10_4_MODULE_ID_MAX][MAX_DBG_MSGS] =
{
{
"INF_DBGID_DEFINITION_START",
"INF_ASSERTION_FAILED",
"INF_TARGET_ID",
"INF_DBGID_DEFINITION_END",
},
{
"WAL_MODULE_DE_DEFINITION_START",
"WAL_MODULE_DE_DEFINITION_END",
},
{
"WLAN_MODULE_WAL_PDEV_DEFINITION_START",
"WLAN_MODULE_WAL_PDEV_DEFINITION_END",
},
{
"WLAN_MODULE_WAL_VDEV_DEFINITION_START",
"WLAN_MODULE_WAL_VDEV_DEFINITION_END",
},
{
"WLAN_MODULE_ROAM_DEFINITION_START",
"WLAN_MODULE_ROAM_DEFINITION_END",
},
{
"WLAN_MODULE_DATA_TXRX_DEFINITION_START",
"WLAN_MODULE_DATA_TXRX_DEFINITION_END",
},
{
"WLAN_MODULE_BLOCKACK_DEFINITION_START",
"WLAN_MODULE_BLOCKACK_DEFINITION_END",
},
{
"WLAN_MODULE_QBOOST_DEFINITION_START",
"WLAN_MODULE_QBOOST_DBGID_WLAN_PEER_NOT_FOUND",
"WLAN_MODULE_QBOOST_DEFINITION_END",
},
{
"WLAN_MODULE_CACHEMGR_DEFINITION_START",
"WLAN_MODULE_CACHEMGR_DEFINITION_END",
},
{
"WLAN_MODULE_HOST_DEFINITION_START",
"WLAN_MODULE_HOST_DEFINITION_END",
},
{
"WMI_DBGID_DEFINITION_START",
"WMI_CMD_RX_XTND_PKT_TOO_SHORT",
"WMI_EXTENDED_CMD_NOT_HANDLED",
"WMI_CMD_RX_PKT_TOO_SHORT",
"WMI_CALLING_WMI_EXTENSION_FN",
"WMI_CMD_NOT_HANDLED",
"WMI_IN_SYNC",
"WMI_TARGET_WMI_SYNC_CMD",
"WMI_SET_SNR_THRESHOLD_PARAMS",
"WMI_SET_RSSI_THRESHOLD_PARAMS",
"WMI_SET_LQ_THRESHOLD_PARAMS",
"WMI_TARGET_CREATE_PSTREAM_CMD",
"WMI_WI_DTM_INUSE",
"WMI_TARGET_DELETE_PSTREAM_CMD",
"WMI_TARGET_IMPLICIT_DELETE_PSTREAM_CMD",
"WMI_TARGET_GET_BIT_RATE_CMD",
"WMI_GET_RATE_MASK_CMD_FIX_RATE_MASK_IS",
"WMI_TARGET_GET_AVAILABLE_CHANNELS_CMD",
"WMI_TARGET_GET_TX_PWR_CMD",
"WMI_FREE_EVBUF_WMIBUF",
"WMI_FREE_EVBUF_DATABUF",
"WMI_FREE_EVBUF_BADFLAG",
"WMI_HTC_RX_ERROR_DATA_PACKET",
"WMI_HTC_RX_SYNC_PAUSING_FOR_MBOX",
"WMI_INCORRECT_WMI_DATA_HDR_DROPPING_PKT",
"WMI_SENDING_READY_EVENT",
"WMI_SETPOWER_MDOE_TO_MAXPERF",
"WMI_SETPOWER_MDOE_TO_REC",
"WMI_BSSINFO_EVENT_FROM",
"WMI_TARGET_GET_STATS_CMD",
"WMI_SENDING_SCAN_COMPLETE_EVENT",
"WMI_SENDING_RSSI_INDB_THRESHOLD_EVENT",
"WMI_SENDING_RSSI_INDBM_THRESHOLD_EVENT",
"WMI_SENDING_LINK_QUALITY_THRESHOLD_EVENT",
"WMI_SENDING_ERROR_REPORT_EVENT",
"WMI_SENDING_CAC_EVENT",
"WMI_TARGET_GET_ROAM_TABLE_CMD",
"WMI_TARGET_GET_ROAM_DATA_CMD",
"WMI_SENDING_GPIO_INTR_EVENT",
"WMI_SENDING_GPIO_ACK_EVENT",
"WMI_SENDING_GPIO_DATA_EVENT",
"WMI_CMD_RX",
"WMI_CMD_RX_XTND",
"WMI_EVENT_SEND",
"WMI_EVENT_SEND_XTND",
"WMI_CMD_PARAMS_DUMP_START",
"WMI_CMD_PARAMS_DUMP_END",
"WMI_CMD_PARAMS",
"WMI_EVENT_ALLOC_FAILURE",
"WMI_DBGID_DCS_PARAM_CMD",
"WMI_DBGID_DEFINITION_END",
},
{
"PS_STA_DEFINITION_START",
"PS_STA_PM_ARB_REQUEST",
"PS_STA_DELIVER_EVENT",
},
{
"RESMGR_OCS_DEFINITION_START",
"RESMGR_OCS_ALLOCRAM_SIZE",
"RESMGR_OCS_RESOURCES",
"RESMGR_OCS_LINK_CREATE",
"RESMGR_OCS_LINK_DELETE",
"RESMGR_OCS_CHREQ_CREATE",
"RESMGR_OCS_CHREQ_DELETE",
"RESMGR_OCS_CHREQ_START",
"RESMGR_OCS_CHREQ_STOP",
"RESMGR_OCS_SCHEDULER_INVOKED",
"RESMGR_OCS_CHREQ_GRANT",
"RESMGR_OCS_CHREQ_COMPLETE",
"RESMGR_OCS_NEXT_TSFTIME",
"RESMGR_OCS_TSF_TIMEOUT_US",
"RESMGR_OCS_CURR_CAT_WINDOW",
"RESMGR_OCS_CURR_CAT_WINDOW_REQ",
"RESMGR_OCS_CURR_CAT_WINDOW_TIMESLOT",
"RESMGR_OCS_CHREQ_RESTART",
"RESMGR_OCS_CLEANUP_CH_ALLOCATORS",
"RESMGR_OCS_PURGE_CHREQ",
"RESMGR_OCS_CH_ALLOCATOR_FREE",
"RESMGR_OCS_RECOMPUTE_SCHEDULE",
"RESMGR_OCS_NEW_CAT_WINDOW_REQ",
"RESMGR_OCS_NEW_CAT_WINDOW_TIMESLOT",
"RESMGR_OCS_CUR_CH_ALLOC",
"RESMGR_OCS_WIN_CH_ALLOC",
"RESMGR_OCS_SCHED_CH_CHANGE",
"RESMGR_OCS_CONSTRUCT_CAT_WIN",
"RESMGR_OCS_CHREQ_PREEMPTED",
"RESMGR_OCS_CH_SWITCH_REQ",
"RESMGR_OCS_CHANNEL_SWITCHED",
"RESMGR_OCS_CLEANUP_STALE_REQS",
"RESMGR_OCS_CHREQ_UPDATE",
"RESMGR_OCS_REG_NOA_NOTIF",
"RESMGR_OCS_DEREG_NOA_NOTIF",
"RESMGR_OCS_GEN_PERIODIC_NOA",
"RESMGR_OCS_RECAL_QUOTAS",
"RESMGR_OCS_GRANTED_QUOTA_STATS",
"RESMGR_OCS_ALLOCATED_QUOTA_STATS",
"RESMGR_OCS_REQ_QUOTA_STATS",
"RESMGR_OCS_TRACKING_TIME_FIRED",
"RESMGR_OCS_DEFINITION_END",
},
{
"RESMGR_CHMGR_DEFINITION_START",
"RESMGR_CHMGR_PAUSE_COMPLETE",
"RESMGR_CHMGR_CHANNEL_CHANGE",
"RESMGR_CHMGR_RESUME_COMPLETE",
"RESMGR_CHMGR_VDEV_PAUSE",
"RESMGR_CHMGR_VDEV_UNPAUSE",
"RESMGR_CHMGR_CTS2S_TX_COMP",
"RESMGR_CHMGR_CFEND_TX_COMP",
"RESMGR_CHMGR_DEFINITION_END",
},
{
"VDEV_MGR_DEFINITION_START",
"VDEV_MGR_BMISS_TIMEOUT",
"VDEV_MGR_BMISS_DETECTED",
"VDEV_MGR_BCN_IN_SYNC",
"VDEV_MGR_AP_KEEPALIVE_IDLE",
"VDEV_MGR_AP_KEEPALIVE_INACTIVE",
"VDEV_MGR_AP_KEEPALIVE_UNRESPONSIVE",
"VDEV_MGR_AP_TBTT_CONFIG",
"VDEV_MGR_FIRST_BCN_RECEIVED",
"VDEV_MGR_VDEV_START",
"VDEV_MGR_VDEV_UP",
"VDEV_MGR_PEER_AUTHORIZED",
"VDEV_MGR_OCS_HP_LP_REQ_POSTED",
"VDEV_MGR_VDEV_START_OCS_HP_REQ_COMPLETE",
"VDEV_MGR_VDEV_START_OCS_HP_REQ_STOP",
"VDEV_MGR_HP_START_TIME",
"VDEV_MGR_FIRST_BMISS_DETECTED",
"VDEV_MGR_FINAL_BMISS_DETECTED",
"VDEV_MGR_VDEV_STOP",
"VDEV_MGR_VDEV_DOWN",
"VDEV_MGR_VDEV_START_RESP",
"VDEV_MGR_VDEV_STOP_RESP",
"VDEV_MGR_VDEV_CREATE",
"VDEV_MGR_VDEV_DELETE",
"VDEV_MGR_DEFINITION_END",
},
{
"WHAL_DBGID_DEFINITION_START",
"WHAL_ERROR_ANI_CONTROL",
"WHAL_ERROR_CHIP_TEST1",
"WHAL_ERROR_CHIP_TEST2",
"WHAL_ERROR_EEPROM_CHECKSUM",
"WHAL_ERROR_EEPROM_MACADDR",
"WHAL_ERROR_INTERRUPT_HIU",
"WHAL_ERROR_KEYCACHE_RESET",
"WHAL_ERROR_KEYCACHE_SET",
"WHAL_ERROR_KEYCACHE_TYPE",
"WHAL_ERROR_KEYCACHE_TKIPENTRY",
"WHAL_ERROR_KEYCACHE_WEPLENGTH",
"WHAL_ERROR_PHY_INVALID_CHANNEL",
"WHAL_ERROR_POWER_AWAKE",
"WHAL_ERROR_POWER_SET",
"WHAL_ERROR_RECV_STOPDMA",
"WHAL_ERROR_RECV_STOPPCU",
"WHAL_ERROR_RESET_CHANNF1",
"WHAL_ERROR_RESET_CHANNF2",
"WHAL_ERROR_RESET_PM",
"WHAL_ERROR_RESET_OFFSETCAL",
"WHAL_ERROR_RESET_RFGRANT",
"WHAL_ERROR_RESET_RXFRAME",
"WHAL_ERROR_RESET_STOPDMA",
"WHAL_ERROR_RESET_ERRID",
"WHAL_ERROR_RESET_ADCDCCAL1",
"WHAL_ERROR_RESET_ADCDCCAL2",
"WHAL_ERROR_RESET_TXIQCAL",
"WHAL_ERROR_RESET_RXIQCAL",
"WHAL_ERROR_RESET_CARRIERLEAK",
"WHAL_ERROR_XMIT_COMPUTE",
"WHAL_ERROR_XMIT_NOQUEUE",
"WHAL_ERROR_XMIT_ACTIVEQUEUE",
"WHAL_ERROR_XMIT_BADTYPE",
"WHAL_ERROR_XMIT_STOPDMA",
"WHAL_ERROR_INTERRUPT_BB_PANIC",
"WHAL_ERROR_PAPRD_MAXGAIN_ABOVE_WINDOW",
"WHAL_SMARTANT_CONFIGURE",
"WHAL_SMARTANT_RXANTENNA",
"WHAL_TX_ENQUEUE",
"WHAL_CAL_SET_CAL_PERIOD",
"WHAL_CAL_PERFORM_CALIBRATION",
"WHAL_DBGID_DEFINITION_END",
},
{
"COEX_DEBUGID_START",
"BTCOEX_DBG_MCI_1",
"BTCOEX_DBG_MCI_2",
"BTCOEX_DBG_MCI_3",
"BTCOEX_DBG_MCI_4",
"BTCOEX_DBG_MCI_5",
"BTCOEX_DBG_MCI_6",
"BTCOEX_DBG_MCI_7",
"BTCOEX_DBG_MCI_8",
"BTCOEX_DBG_MCI_9",
"BTCOEX_DBG_MCI_10",
"COEX_WAL_BTCOEX_INIT",
"COEX_WAL_PAUSE",
"COEX_WAL_RESUME",
"COEX_UPDATE_AFH",
"COEX_HWQ_EMPTY_CB",
"COEX_MCI_TIMER_HANDLER",
"COEX_MCI_RECOVER",
"ERROR_COEX_MCI_ISR",
"ERROR_COEX_MCI_GPM",
"COEX_ProfileType",
"COEX_LinkID",
"COEX_LinkState",
"COEX_LinkRole",
"COEX_LinkRate",
"COEX_VoiceType",
"COEX_TInterval",
"COEX_WRetrx",
"COEX_Attempts",
"COEX_PerformanceState",
"COEX_LinkType",
"COEX_RX_MCI_GPM_VERSION_QUERY",
"COEX_RX_MCI_GPM_VERSION_RESPONSE",
"COEX_RX_MCI_GPM_STATUS_QUERY",
"COEX_STATE_WLAN_VDEV_DOWN",
"COEX_STATE_WLAN_VDEV_START",
"COEX_STATE_WLAN_VDEV_CONNECTED",
"COEX_STATE_WLAN_VDEV_SCAN_STARTED",
"COEX_STATE_WLAN_VDEV_SCAN_END",
"COEX_STATE_WLAN_DEFAULT",
"COEX_CHANNEL_CHANGE",
"COEX_POWER_CHANGE",
"COEX_CONFIG_MGR",
"COEX_TX_MCI_GPM_BT_CAL_REQ",
"COEX_TX_MCI_GPM_BT_CAL_GRANT",
"COEX_TX_MCI_GPM_BT_CAL_DONE",
"COEX_TX_MCI_GPM_WLAN_CAL_REQ",
"COEX_TX_MCI_GPM_WLAN_CAL_GRANT",
"COEX_TX_MCI_GPM_WLAN_CAL_DONE",
"COEX_TX_MCI_GPM_BT_DEBUG",
"COEX_TX_MCI_GPM_VERSION_QUERY",
"COEX_TX_MCI_GPM_VERSION_RESPONSE",
"COEX_TX_MCI_GPM_STATUS_QUERY",
"COEX_TX_MCI_GPM_HALT_BT_GPM",
"COEX_TX_MCI_GPM_WLAN_CHANNELS",
"COEX_TX_MCI_GPM_BT_PROFILE_INFO",
"COEX_TX_MCI_GPM_BT_STATUS_UPDATE",
"COEX_TX_MCI_GPM_BT_UPDATE_FLAGS",
"COEX_TX_MCI_GPM_UNKNOWN",
"COEX_TX_MCI_SYS_WAKING",
"COEX_TX_MCI_LNA_TAKE",
"COEX_TX_MCI_LNA_TRANS",
"COEX_TX_MCI_SYS_SLEEPING",
"COEX_TX_MCI_REQ_WAKE",
"COEX_TX_MCI_REMOTE_RESET",
"COEX_TX_MCI_TYPE_UNKNOWN",
"COEX_WHAL_MCI_RESET",
"COEX_POLL_BT_CAL_DONE_TIMEOUT",
"COEX_WHAL_PAUSE",
"COEX_RX_MCI_GPM_BT_CAL_REQ",
"COEX_RX_MCI_GPM_BT_CAL_DONE",
"COEX_RX_MCI_GPM_BT_CAL_GRANT",
"COEX_WLAN_CAL_START",
"COEX_WLAN_CAL_RESULT",
"COEX_BtMciState",
"COEX_BtCalState",
"COEX_WlanCalState",
"COEX_RxReqWakeCount",
"COEX_RxRemoteResetCount",
"COEX_RESTART_CAL",
"COEX_SENDMSG_QUEUE",
"COEX_RESETSEQ_LNAINFO_TIMEOUT",
"COEX_MCI_ISR_IntRaw",
"COEX_MCI_ISR_Int1Raw",
"COEX_MCI_ISR_RxMsgRaw",
"COEX_WHAL_COEX_RESET",
"COEX_WAL_COEX_INIT",
"COEX_TXRX_CNT_LIMIT_ISR",
"COEX_CH_BUSY",
"COEX_REASSESS_WLAN_STATE",
"COEX_BTCOEX_WLAN_STATE_UPDATE",
"COEX_BT_NUM_OF_PROFILES",
"COEX_BT_NUM_OF_HID_PROFILES",
"COEX_BT_NUM_OF_ACL_PROFILES",
"COEX_BT_NUM_OF_HI_ACL_PROFILES",
"COEX_BT_NUM_OF_VOICE_PROFILES",
"COEX_WLAN_AGGR_LIMIT",
"COEX_BT_LOW_PRIO_BUDGET",
"COEX_BT_HI_PRIO_BUDGET",
"COEX_BT_IDLE_TIME",
"COEX_SET_COEX_WEIGHT",
"COEX_WLAN_WEIGHT_GROUP",
"COEX_BT_WEIGHT_GROUP",
"COEX_BT_INTERVAL_ALLOC",
"COEX_BT_SCHEME",
"COEX_BT_MGR",
"COEX_BT_SM_ERROR",
"COEX_SYSTEM_UPDATE",
"COEX_LOW_PRIO_LIMIT",
"COEX_HI_PRIO_LIMIT",
"COEX_BT_INTERVAL_START",
"COEX_WLAN_INTERVAL_START",
"COEX_NON_LINK_BUDGET",
"COEX_CONTENTION_MSG",
"COEX_SET_NSS",
"COEX_SELF_GEN_MASK",
"COEX_PROFILE_ERROR",
"COEX_WLAN_INIT",
"COEX_BEACON_MISS",
"COEX_BEACON_OK",
"COEX_BTCOEX_SCAN_ACTIVITY",
"COEX_SCAN_ACTIVITY",
"COEX_FORCE_QUIETTIME",
"COEX_BT_MGR_QUIETTIME",
"COEX_BT_INACTIVITY_TRIGGER",
"COEX_BT_INACTIVITY_REPORTED",
"COEX_TX_MCI_GPM_WLAN_PRIO",
"COEX_TX_MCI_GPM_BT_PAUSE_PROFILE",
"COEX_TX_MCI_GPM_WLAN_SET_ACL_INACTIVITY",
"COEX_RX_MCI_GPM_BT_ACL_INACTIVITY_REPORT",
"COEX_GENERIC_ERROR",
"COEX_RX_RATE_THRESHOLD",
"COEX_RSSI",
"COEX_WLAN_VDEV_NOTIF_START",
"COEX_WLAN_VDEV_NOTIF_UP",
"COEX_WLAN_VDEV_NOTIF_DOWN",
"COEX_WLAN_VDEV_NOTIF_STOP",
"COEX_WLAN_VDEV_NOTIF_ADD_PEER",
"COEX_WLAN_VDEV_NOTIF_DELETE_PEER",
"COEX_WLAN_VDEV_NOTIF_CONNECTED_PEER",
"COEX_WLAN_VDEV_NOTIF_PAUSE",
"COEX_WLAN_VDEV_NOTIF_UNPAUSED",
"COEX_STATE_WLAN_VDEV_PEER_ADD",
"COEX_STATE_WLAN_VDEV_CONNECTED_PEER",
"COEX_STATE_WLAN_VDEV_DELETE_PEER",
"COEX_STATE_WLAN_VDEV_PAUSE",
"COEX_STATE_WLAN_VDEV_UNPAUSED",
"COEX_SCAN_CALLBACK",
"COEX_RC_SET_CHAINMASK",
"COEX_DEBUG_ID_END",
},
{
"SCAN_START_COMMAND_FAILED",
"SCAN_STOP_COMMAND_FAILED",
"SCAN_EVENT_SEND_FAILED",
"SCAN_ENGINE_START",
"SCAN_ENGINE_CANCEL_COMMAND",
"SCAN_ENGINE_STOP_DUE_TO_TIMEOUT",
"SCAN_EVENT_SEND_TO_HOST",
"SCAN_EVENT_ADD",
"SCAN_EVENT_REM",
"SCAN_EVENT_PREEMPTED",
"SCAN_EVENT_RESTARTED",
"SCAN_EVENT_COMPLETED",
"SCAN_START_PARAMS1",
"SCAN_START_PARAMS2",
"SCAN_EVENT_SEND",
},
{
"BEACON_EVENT_SWBA_SEND_FAILED",
},
{
"RATECTRL_DBGID_DEFINITION_START",
"RATECTRL_DBGID_ASSOC",
"RATECTRL_DBGID_NSS_CHANGE",
"RATECTRL_DBGID_CHAINMASK_ERR",
"RATECTRL_DBGID_UNEXPECTED_FRAME",
"RATECTRL_DBGID_WAL_RCQUERY",
"RATECTRL_DBGID_WAL_RCUPDATE",
"RATECTRL_DBGID_DEFINITION_END",
},
{
"AP_PS_DBGID_DEFINITION_START",
"AP_PS_DBGID_UPDATE_TIM",
"AP_PS_DBGID_PEER_STATE_CHANGE",
"AP_PS_DBGID_PSPOLL",
"AP_PS_DBGID_PEER_CREATE",
"AP_PS_DBGID_PEER_DELETE",
"AP_PS_DBGID_VDEV_CREATE",
"AP_PS_DBGID_VDEV_DELETE",
"AP_PS_DBGID_SYNC_TIM",
"AP_PS_DBGID_NEXT_RESPONSE",
"AP_PS_DBGID_START_SP",
"AP_PS_DBGID_COMPLETED_EOSP",
"AP_PS_DBGID_TRIGGER",
"AP_PS_DBGID_DUPLICATE_TRIGGER",
"AP_PS_DBGID_UAPSD_RESPONSE",
"AP_PS_DBGID_SEND_COMPLETE",
"AP_PS_DBGID_SEND_N_COMPLETE",
"AP_PS_DBGID_DETECT_OUT_OF_SYNC_STA",
},
{
"MGMT_TXRX_DBGID_DEFINITION_START",
"MGMT_TXRX_FORWARD_TO_HOST",
"MGMT_TXRX_MU_GID_MGMT",
"MGMT_TXRX_DBGID_DEFINITION_END",
},
{
"WAL_DBGID_DEFINITION_START",
"WAL_DBGID_FAST_WAKE_REQUEST",
"WAL_DBGID_FAST_WAKE_RELEASE",
"WAL_DBGID_SET_POWER_STATE",
"WAL_DBGID_CHANNEL_CHANGE_FORCE_RESET",
"WAL_DBGID_CHANNEL_CHANGE",
"WAL_DBGID_VDEV_START",
"WAL_DBGID_VDEV_STOP",
"WAL_DBGID_VDEV_UP",
"WAL_DBGID_VDEV_DOWN",
"WAL_DBGID_SW_WDOG_RESET",
"WAL_DBGID_TX_SCH_REGISTER_TIDQ",
"WAL_DBGID_TX_SCH_UNREGISTER_TIDQ",
"WAL_DBGID_TX_SCH_TICKLE_TIDQ",
"WAL_DBGID_XCESS_FAILURES",
"WAL_DBGID_AST_ADD_WDS_ENTRY",
"WAL_DBGID_AST_DEL_WDS_ENTRY",
"WAL_DBGID_AST_WDS_ENTRY_PEER_CHG",
"WAL_DBGID_AST_WDS_SRC_LEARN_FAIL",
"WAL_DBGID_STA_KICKOUT",
"WAL_DBGID_BAR_TX_FAIL",
"WAL_DBGID_BAR_ALLOC_FAIL",
"WAL_DBGID_LOCAL_DATA_TX_FAIL",
"WAL_DBGID_SECURITY_PM4_QUEUED",
"WAL_DBGID_SECURITY_GM1_QUEUED",
"WAL_DBGID_SECURITY_PM4_SENT",
"WAL_DBGID_SECURITY_ALLOW_DATA",
"WAL_DBGID_SECURITY_UCAST_KEY_SET",
"WAL_DBGID_SECURITY_MCAST_KEY_SET",
"WAL_DBGID_SECURITY_ENCR_EN",
"WAL_DBGID_BB_WDOG_TRIGGERED",
"WAL_DBGID_RX_LOCAL_BUFS_LWM",
"WAL_DBGID_RX_LOCAL_DROP_LARGE_MGMT",
"WAL_DBGID_VHT_ILLEGAL_RATE_PHY_ERR_DETECTED",
"WAL_DBGID_DEV_RESET",
"WAL_DBGID_TX_BA_SETUP",
"WAL_DBGID_RX_BA_SETUP",
"WAL_DBGID_DEV_TX_TIMEOUT",
"WAL_DBGID_DEV_RX_TIMEOUT",
"WAL_DBGID_STA_VDEV_XRETRY",
"WAL_DBGID_DCS",
"WAL_DBGID_HCM_BIN",
"WAL_DBGID_HCM_BIN_PENALIZE",
"WAL_DBGID_HCM_BIN_DEPENALIZE",
"WAL_DBGID_AST_UPDATE_WDS_ENTRY",
"WAL_DBGID_PEER_EXT_STATS",
"WAL_DBGID_TX_AC_BUFFER_SET",
"WAL_DBGID_AST_ENTRY_EXIST",
"WAL_DBGID_AST_ENTRY_FULL",
"WAL_DBGID_MGMT_TX_FAIL",
"WAL_DBGID_SET_M4_SENT_MANUALLY",
"WAL_DBGID_PROCESS_4_WAY_HANDSHAKE",
"WAL_DBGID_SET_HW_FILTER",
"WAL_DBGID_TX_PPDU_COMP_ERR",
"WAL_DBGID_TX_ENC_KEY_DROP",
"WAL_DBGID_PDEV_INFO_PRINT",
"WAL_DBGID_VDEV_INFO_PRINT",
"WAL_DBGID_LTEU_START_MU",
"WAL_DBGID_LTEU_REPORT_MU",
"WAL_DBGID_LTEU_SET_CONFIG1",
"WAL_DBGID_LTEU_SET_CONFIG2",
"WAL_DBGID_LTEU_SET_CONFIG3",
"WAL_DBGID_LTEU_INIT",
"WAL_DBGID_LTEU_MU_IN_PROGRESS",
"WAL_DBGID_LTEU_END_MU",
"WAL_DBGID_LTEU_PER_PKT_LOG1",
"WAL_DBGID_LTEU_PER_PKT_LOG2",
"WAL_DBGID_LTEU_PER_PKT_LOG3",
"WAL_DBGID_LTEU_START_MU_PARAMS",
"WAL_DBGID_LTEU_PKT_BASIC_MU",
"WAL_DBGID_LTEU_PKT_ADV_MU",
"WAL_DBGID_LTEU_PKT_BSSID_ENTRY",
"WAL_DBGID_LTEU_PER_BSSID_MU",
"WAL_DBGID_LTEU_COMPUTED_BSSID_MU",
"WAL_DBGID_LTEU_TOTAL_BSSID_MU",
"WAL_DBGID_LTEU_HIDDEN_NODE",
"WAL_DBGID_LTEU_REPORT_MU1",
"WAL_DBGID_LTEU_REPORT_MU2",
"WAL_DBGID_LTEU_START_MU_PARAMS1",
"WAL_DBGID_LTEU_START_MU_PARAMS2",
"WAL_DBGID_LTEU_UPDATE_BSSID_MU",
"WAL_DBGID_LTEU_BSSID_INDEX_MU",
"WAL_DBGID_LTEU_BSSID_MU_INFO",
"WAL_DBGID_LTEU_PKT_BINNING",
"WAL_DBGID_LTEU_PKT_MU_DB_ENTRY",
"WAL_DBGID_LTEU_MU_DB_ENTRY1",
"WAL_DBGID_LTEU_MU_DB_ENTRY2",
"WAL_DBGID_DEFINITION_END",
},
{
"ANI_DBGID_POLL",
"ANI_DBGID_CONTROL",
"ANI_DBGID_OFDM_PARAMS",
"ANI_DBGID_CCK_PARAMS",
"ANI_DBGID_RESET",
"ANI_DBGID_RESTART",
"ANI_DBGID_OFDM_LEVEL",
"ANI_DBGID_CCK_LEVEL",
"ANI_DBGID_FIRSTEP",
"ANI_DBGID_CYCPWR",
"ANI_DBGID_MRC_CCK",
"ANI_DBGID_SELF_CORR_LOW",
"ANI_DBGID_ENABLE",
"ANI_DBGID_CURRENT_LEVEL",
"ANI_DBGID_POLL_PERIOD",
"ANI_DBGID_LISTEN_PERIOD",
"ANI_DBGID_OFDM_LEVEL_CFG",
"ANI_DBGID_CCK_LEVEL_CFG",
},
{
"OFFLOAD_MGR_DBGID_DEFINITION_START",
"OFFLOADMGR_REGISTER_OFFLOAD",
"OFFLOADMGR_DEREGISTER_OFFLOAD",
"OFFLOADMGR_NO_REG_DATA_HANDLERS",
"OFFLOADMGR_NO_REG_EVENT_HANDLERS",
"OFFLOADMGR_REG_OFFLOAD_FAILED",
"OFFLOADMGR_DBGID_DEFINITION_END",
},
{
"RESOURCE_DBGID_DEFINITION_START",
"RESOURCE_PEER_ALLOC",
"RESOURCE_PEER_FREE",
"RESOURCE_PEER_ALLOC_WAL_PEER",
"RESOURCE_DBGID_DEFINITION_END",
},
{
"WLAN_DCS_DBGID_INIT",
"WLAN_DCS_DBGID_WMI_CWINT",
"WLAN_DCS_DBGID_TIMER",
"WLAN_DCS_DBGID_CMDG",
"WLAN_DCS_DBGID_CMDS",
"WLAN_DCS_DBGID_DINIT",
},
{
"P2P_DBGID_DEFINITION_START",
"P2P_DEV_REGISTER",
"P2P_HANDLE_NOA",
"P2P_UPDATE_SCHEDULE_OPPS",
"P2P_UPDATE_SCHEDULE",
"P2P_UPDATE_START_TIME",
"P2P_UPDATE_START_TIME_DIFF_TSF32",
"P2P_UPDATE_START_TIME_FINAL",
"P2P_SETUP_SCHEDULE_TIMER",
"P2P_PROCESS_SCHEDULE_AFTER_CALC",
"P2P_PROCESS_SCHEDULE_STARTED_TIMER",
"P2P_CALC_SCHEDULES_FIRST_CALL_ALL_NEXT_EVENT",
"P2P_CALC_SCHEDULES_FIRST_VALUE",
"P2P_CALC_SCHEDULES_EARLIEST_NEXT_EVENT",
"P2P_CALC_SCHEDULES_SANITY_COUNT",
"P2P_CALC_SCHEDULES_CALL_ALL_NEXT_EVENT_FROM_WHILE_LOOP",
"P2P_CALC_SCHEDULES_TIMEOUT_1",
"P2P_CALC_SCHEDULES_TIMEOUT_2",
"P2P_FIND_ALL_NEXT_EVENTS_REQ_EXPIRED",
"P2P_FIND_ALL_NEXT_EVENTS_REQ_ACTIVE",
"P2P_FIND_NEXT_EVENT_REQ_NOT_STARTED",
"P2P_FIND_NEXT_EVENT_REQ_COMPLETE_NON_PERIODIC",
"P2P_FIND_NEXT_EVENT_IN_MID_OF_NOA",
"P2P_FIND_NEXT_EVENT_REQ_COMPLETE",
"P2P_SCHEDULE_TIMEOUT",
"P2P_CALC_SCHEDULES_ENTER",
"P2P_PROCESS_SCHEDULE_ENTER",
"P2P_FIND_ALL_NEXT_EVENTS_INDIVIDUAL_REQ_AFTER_CHANGE",
"P2P_FIND_ALL_NEXT_EVENTS_INDIVIDUAL_REQ_BEFORE_CHANGE",
"P2P_FIND_ALL_NEXT_EVENTS_ENTER",
"P2P_FIND_NEXT_EVENT_ENTER",
"P2P_NOA_GO_PRESENT",
"P2P_NOA_GO_ABSENT",
"P2P_GO_NOA_NOTIF",
"P2P_GO_TBTT_OFFSET",
"P2P_GO_GET_NOA_INFO",
"P2P_DBGID_DEFINITION_END",
},
{
"CSA_DBGID_DEFINITION_START",
"CSA_OFFLOAD_POOL_INIT",
"CSA_OFFLOAD_REGISTER_VDEV",
"CSA_OFFLOAD_DEREGISTER_VDEV",
"CSA_DEREGISTER_VDEV_ERROR",
"CSA_OFFLOAD_BEACON_RECEIVED",
"CSA_OFFLOAD_BEACON_CSA_RECV",
"CSA_OFFLOAD_CSA_RECV_ERROR_IE",
"CSA_OFFLOAD_CSA_TIMER_ERROR",
"CSA_OFFLOAD_CSA_TIMER_EXP",
"CSA_OFFLOAD_WMI_EVENT_ERROR",
"CSA_OFFLOAD_WMI_EVENT_SENT",
"CSA_OFFLOAD_WMI_CHANSWITCH_RECV",
},
{
"WLAN_CHATTER_DBGID_DEFINITION_START",
"WLAN_CHATTER_ENTER",
"WLAN_CHATTER_EXIT",
"WLAN_CHATTER_FILTER_HIT",
"WLAN_CHATTER_FILTER_MISS",
"WLAN_CHATTER_FILTER_FULL",
"WLAN_CHATTER_FILTER_TM_ADJ",
"WLAN_CHATTER_DBGID_DEFINITION_END",
},
{
"WOW_DBGID_DEFINITION_START",
"WOW_ENABLE_CMDID",
"WOW_RECV_DATA_PKT",
"WOW_WAKE_HOST_DATA",
"WOW_RECV_MGMT",
"WOW_WAKE_HOST_MGMT",
"WOW_RECV_EVENT",
"WOW_WAKE_HOST_EVENT",
"WOW_INIT",
"WOW_RECV_MAGIC_PKT",
"WOW_RECV_BITMAP_PATTERN",
},
{
"RTT_CALL_FLOW",
"RTT_REQ_SUB_TYPE",
"RTT_MEAS_REQ_HEAD",
"RTT_MEAS_REQ_BODY",
"RTT_INIT_GLOBAL_STATE",
"RTT_REPORT",
"RTT_ERROR_REPORT",
"RTT_TIMER_STOP",
"RTT_SEND_TM_FRAME",
"RTT_V3_RESP_CNT",
"RTT_V3_RESP_FINISH",
"RTT_CHANNEL_SWITCH_REQ",
"RTT_CHANNEL_SWITCH_GRANT",
"RTT_CHANNEL_SWITCH_COMPLETE",
"RTT_CHANNEL_SWITCH_PREEMPT",
"RTT_CHANNEL_SWITCH_STOP",
"RTT_TIMER_START",
"RTT_FTM_PARAM_INFO",
"RTT_RX_TM_FRAME",
"RTT_INITR_TSTAMP",
"RTT_RSPDR_TSTAMP",
"RTT_TX_COMP_STATUS",
"RTT_ERROR_WMI_EVENT"
},
{
"HOSTQ_HOST_PARAM_NUMPEER",
"HOSTQ_HOST_PARAM_NUMTID",
"HOSTQ_HOST_PARAM_HOSTADDR",
},
{
"WAL_DBGID_PFSCHED_SCH_CMD",
"WAL_DBGID_PFSCHED_USER_INFO",
},
{
"WLAN_DEBUG_MODULE_DBGID_START",
"WLAN_DEBUG_DBGID_PEER",
"WLAN_DEBUG_DBGID_PDEV",
"WLAN_DEBUG_DBGID_VDEV",
"WLAN_DEBUG_MODULE_DBGID_END",
},
};
#define MAX_FWLOG_PARSE 6
char FWLOG_PARSE_ARG[MAX_FWLOG_PARSE][MAX_DBG_MSGS] = {
"RATECTRL_DBGID_ASSOC",
"WAL_DBGID_SECURITY_UCAST_KEY_SET",
"WAL_DBGID_STA_KICKOUT",
"WAL_DBGID_XCESS_FAILURES",
"WAL_DBGID_TX_BA_SETUP",
"AP_PS_DBGID_DETECT_OUT_OF_SYNC_STA",
};
static char * fw_dbglog_get_msg(u32 moduleid, u32 debugid,
u32 mod_id_max,
char *(*dbg_msg_arr)[][MAX_DBG_MSGS])
{
static char unknown_str[64];
if (moduleid < mod_id_max && debugid < MAX_DBG_MSGS) {
char *str = (*dbg_msg_arr)[moduleid][debugid];
if (str && str[0] != '\0') {
return str;
}
}
snprintf(unknown_str, sizeof(unknown_str),
"UNKNOWN %u:%u",
moduleid, debugid);
return unknown_str;
}
static void ath10k_fwlog_print(struct ath10k *ar, u32 mod_id, u16 vap_id,
u32 dbg_id, u32 timestamp,
u32 numargs, u32 *args) {
int i;
u32 module_id_max;
bool parse_arg = false;
char *(*dbg_msg_arr)[][MAX_DBG_MSGS];
char *str;
if ((ar->running_fw->fw_file.wmi_op_version ==
ATH10K_FW_WMI_OP_VERSION_10_4)) {
module_id_max = WLAN_10_4_MODULE_ID_MAX;
dbg_msg_arr = &FW_10_4_DBG_MSG_ARR;
} else {
module_id_max = WLAN_MODULE_ID_MAX;
dbg_msg_arr = &DBG_MSG_ARR;
}
str = fw_dbglog_get_msg(mod_id, dbg_id,
module_id_max, dbg_msg_arr);
for (i = 0; i < MAX_FWLOG_PARSE; i++) {
if (!strcmp(str, FWLOG_PARSE_ARG[i])) {
parse_arg = true;
break;
}
}
if (vap_id < FW_DBGLOG_VAPID_NUM_MAX)
printk(KERN_CONT FW_DBGLOG_PRINT_PREFIX "[%u] vap-%u %s ( ",
timestamp, vap_id, str);
else
printk(KERN_CONT FW_DBGLOG_PRINT_PREFIX "[%u] %s ( ",
timestamp, str);
for (i = 0; i < numargs; i++) {
printk(KERN_CONT "%#x", args[i]);
if (parse_arg && ((i + 1) < numargs)) {
u16 *parse;
int j = 0;
i++;
parse = (u16 *)(args + i);
if (!parse[j + 1])
printk("%04x", parse[j]);
else
printk("%04x, %#x", parse[j + 1], parse[j]);
parse_arg = false;
}
if ((i + 1) < numargs)
printk(KERN_CONT ", ");
}
printk(KERN_CONT " )\n");
}
static void ath10k_fwlog_parse_msg(struct ath10k *ar, u8 *data, int len) {
u32 *buffer;
u32 count;
u32 timestamp;
u32 debugid;
u32 moduleid;
u16 vapid;
u16 numargs;
u16 length;
u32 dropped;
if (len < 4) {
return;
}
dropped = *((u32 *)data);
data += sizeof(dropped);
len -= sizeof(dropped);
if (dropped > 0)
printk(FW_DBGLOG_PRINT_PREFIX "%d log buffers are dropped \n",
dropped);
count = 0;
buffer = (u32 *)data;
length = (len >> 2);
while (count < length) {
debugid = FW_DBGLOG_GET_DBGID(buffer[count + 1]);
moduleid = FW_DBGLOG_GET_MODULEID(buffer[count + 1]);
vapid = FW_DBGLOG_GET_VAPID(buffer[count + 1]);
numargs = FW_DBGLOG_GET_NUMARGS(buffer[count + 1]);
timestamp = FW_DBGLOG_GET_TIME_STAMP(buffer[count]);
if (moduleid >= ar->fwlog_max_moduleid)
return;
printk("[%s] ", wiphy_name(ar->hw->wiphy));
ath10k_fwlog_print(ar, moduleid, vapid, debugid,
timestamp, numargs,
(((u32 *)buffer) +
2 + count));
count += numargs + 2;
}
}
static void ath10k_fwlog_print_work(struct work_struct *work) {
struct ath10k *ar = container_of(work, struct ath10k, fwlog_tx_work);
struct sk_buff *skb;
skb = skb_dequeue(&ar->fwlog_tx_queue);
if (skb) {
ath10k_fwlog_parse_msg(ar, skb->data, skb->len);
dev_kfree_skb(skb);
if (skb_queue_len(&ar->fwlog_tx_queue)) {
ieee80211_queue_work(ar->hw,
&ar->fwlog_tx_work);
}
}
}
void ath10k_handle_fwlog_msg(struct ath10k *ar, struct sk_buff *skb) {
if (!test_bit(ATH10K_FLAG_CORE_REGISTERED, &ar->dev_flags)) {
ath10k_warn(ar, "ignoring fwlog event!!!\n");
dev_kfree_skb(skb);
return;
}
if (skb_queue_len(&ar->fwlog_tx_queue) >= ATH10K_FWLOG_MAX_EVT_QUEUE) {
ath10k_warn(ar, "reached fwlog queue limit\n");
dev_kfree_skb(skb);
return;
}
skb_queue_tail(&ar->fwlog_tx_queue, skb);
ieee80211_queue_work(ar->hw, &ar->fwlog_tx_work);
}
void ath10k_fwlog_register(struct ath10k *ar) {
INIT_WORK(&ar->fwlog_tx_work, ath10k_fwlog_print_work);
skb_queue_head_init(&ar->fwlog_tx_queue);
}
void ath10k_fwlog_unregister(struct ath10k *ar) {
struct sk_buff *skb;
cancel_work_sync(&ar->fwlog_tx_work);
for (; ;) {
skb = skb_dequeue(&ar->fwlog_tx_queue);
if (!skb)
break;
dev_kfree_skb(skb);
}
}