/* * 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" #if defined(__FreeBSD__) #include "fwlog.h" #endif #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", }, }; 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; char *(*dbg_msg_arr)[][MAX_DBG_MSGS]; #if defined(__linux__) if ((ar->wmi.op_version == #elif defined(__FreeBSD__) if ((ar->running_fw->fw_file.wmi_op_version == #endif 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; } if (vap_id < FW_DBGLOG_VAPID_NUM_MAX) printk(FW_DBGLOG_PRINT_PREFIX "[%u] vap-%u %s ( ", timestamp, vap_id, fw_dbglog_get_msg(mod_id, dbg_id, module_id_max, dbg_msg_arr)); else printk(FW_DBGLOG_PRINT_PREFIX "[%u] %s ( ", timestamp, fw_dbglog_get_msg(mod_id, dbg_id, module_id_max, dbg_msg_arr)); for (i = 0; i < numargs; i++) { printk("%#x", args[i]); if ((i + 1) < numargs) printk(", "); } printk(" )\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); } }