| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627 |
- /*
- * Extended Trap data component interface file.
- *
- * Portions of this code are copyright (c) 2020 Cypress Semiconductor Corporation
- *
- * Copyright (C) 1999-2020, Broadcom Corporation
- *
- * Unless you and Broadcom execute a separate written software license
- * agreement governing use of this software, this software is licensed to you
- * under the terms of the GNU General Public License version 2 (the "GPL"),
- * available at http://www.broadcom.com/licenses/GPLv2.php, with the
- * following added to such license:
- *
- * As a special exception, the copyright holders of this software give you
- * permission to link this software with independent modules, and to copy and
- * distribute the resulting executable under terms of your choice, provided that
- * you also meet, for each linked independent module, the terms and conditions of
- * the license of that module. An independent module is a module which is not
- * derived from this software. The special exception does not apply to any
- * modifications of the software.
- *
- * Notwithstanding the above, under no circumstances may you combine this
- * software in any way with any other Broadcom software provided under a license
- * other than the GPL, without Broadcom's express prior written consent.
- *
- *
- * <<Broadcom-WL-IPTag/Open:>>
- *
- * $Id: etd.h 715234 2019-05-24 17:06:50Z $
- */
- #ifndef _ETD_H_
- #define _ETD_H_
- #if defined(ETD) && !defined(WLETD)
- #include <hnd_trap.h>
- #endif // endif
- #include <bcmutils.h>
- /* Tags for structures being used by etd info iovar.
- * Related structures are defined in wlioctl.h.
- */
- #define ETD_TAG_JOIN_CLASSIFICATION_INFO 10 /* general information about join request */
- #define ETD_TAG_JOIN_TARGET_CLASSIFICATION_INFO 11 /* per target (AP) join information */
- #define ETD_TAG_ASSOC_STATE 12 /* current state of the Device association state machine */
- #define ETD_TAG_CHANNEL 13 /* current channel on which the association was performed */
- #define ETD_TAG_TOTAL_NUM_OF_JOIN_ATTEMPTS 14 /* number of join attempts (bss_retries) */
- #define PSMDBG_REG_READ_CNT_FOR_PSMWDTRAP_V1 3
- #define PSMDBG_REG_READ_CNT_FOR_PSMWDTRAP_V2 6
- #ifndef _LANGUAGE_ASSEMBLY
- #define HND_EXTENDED_TRAP_VERSION 1
- #define HND_EXTENDED_TRAP_BUFLEN 512
- typedef struct hnd_ext_trap_hdr {
- uint8 version; /* Extended trap version info */
- uint8 reserved; /* currently unused */
- uint16 len; /* Length of data excluding this header */
- uint8 data[]; /* TLV data */
- } hnd_ext_trap_hdr_t;
- typedef enum {
- TAG_TRAP_NONE = 0, /* None trap type */
- TAG_TRAP_SIGNATURE = 1, /* Processor register dumps */
- TAG_TRAP_STACK = 2, /* Processor stack dump (possible code locations) */
- TAG_TRAP_MEMORY = 3, /* Memory subsystem dump */
- TAG_TRAP_DEEPSLEEP = 4, /* Deep sleep health check failures */
- TAG_TRAP_PSM_WD = 5, /* PSM watchdog information */
- TAG_TRAP_PHY = 6, /* Phy related issues */
- TAG_TRAP_BUS = 7, /* Bus level issues */
- TAG_TRAP_MAC_SUSP = 8, /* Mac level suspend issues */
- TAG_TRAP_BACKPLANE = 9, /* Backplane related errors */
- /* Values 10 through 14 are in use by etd_data info iovar */
- TAG_TRAP_PCIE_Q = 15, /* PCIE Queue state during memory trap */
- TAG_TRAP_WLC_STATE = 16, /* WLAN state during memory trap */
- TAG_TRAP_MAC_WAKE = 17, /* Mac level wake issues */
- TAG_TRAP_PHYTXERR_THRESH = 18, /* Phy Tx Err */
- TAG_TRAP_HC_DATA = 19, /* Data collected by HC module */
- TAG_TRAP_LOG_DATA = 20,
- TAG_TRAP_CODE = 21, /* The trap type */
- TAG_TRAP_HMAP = 22, /* HMAP violation Address and Info */
- TAG_TRAP_PCIE_ERR_ATTN = 23, /* PCIE error attn log */
- TAG_TRAP_AXI_ERROR = 24, /* AXI Error */
- TAG_TRAP_AXI_HOST_INFO = 25, /* AXI Host log */
- TAG_TRAP_AXI_SR_ERROR = 26, /* AXI SR error log */
- TAG_TRAP_LAST /* This must be the last entry */
- } hnd_ext_tag_trap_t;
- typedef struct hnd_ext_trap_bp_err
- {
- uint32 error;
- uint32 coreid;
- uint32 baseaddr;
- uint32 ioctrl;
- uint32 iostatus;
- uint32 resetctrl;
- uint32 resetstatus;
- uint32 resetreadid;
- uint32 resetwriteid;
- uint32 errlogctrl;
- uint32 errlogdone;
- uint32 errlogstatus;
- uint32 errlogaddrlo;
- uint32 errlogaddrhi;
- uint32 errlogid;
- uint32 errloguser;
- uint32 errlogflags;
- uint32 itipoobaout;
- uint32 itipoobbout;
- uint32 itipoobcout;
- uint32 itipoobdout;
- } hnd_ext_trap_bp_err_t;
- #define HND_EXT_TRAP_AXISR_INFO_VER_1 1
- typedef struct hnd_ext_trap_axi_sr_err_v1
- {
- uint8 version;
- uint8 pad[3];
- uint32 error;
- uint32 coreid;
- uint32 baseaddr;
- uint32 ioctrl;
- uint32 iostatus;
- uint32 resetctrl;
- uint32 resetstatus;
- uint32 resetreadid;
- uint32 resetwriteid;
- uint32 errlogctrl;
- uint32 errlogdone;
- uint32 errlogstatus;
- uint32 errlogaddrlo;
- uint32 errlogaddrhi;
- uint32 errlogid;
- uint32 errloguser;
- uint32 errlogflags;
- uint32 itipoobaout;
- uint32 itipoobbout;
- uint32 itipoobcout;
- uint32 itipoobdout;
- /* axi_sr_issue_debug */
- uint32 sr_pwr_control;
- uint32 sr_corereset_wrapper_main;
- uint32 sr_corereset_wrapper_aux;
- uint32 sr_main_gci_status_0;
- uint32 sr_aux_gci_status_0;
- uint32 sr_dig_gci_status_0;
- } hnd_ext_trap_axi_sr_err_v1_t;
- #define HND_EXT_TRAP_PSMWD_INFO_VER 1
- typedef struct hnd_ext_trap_psmwd_v1 {
- uint16 xtag;
- uint16 version; /* version of the information following this */
- uint32 i32_maccontrol;
- uint32 i32_maccommand;
- uint32 i32_macintstatus;
- uint32 i32_phydebug;
- uint32 i32_clk_ctl_st;
- uint32 i32_psmdebug[PSMDBG_REG_READ_CNT_FOR_PSMWDTRAP_V1];
- uint16 i16_0x1a8; /* gated clock en */
- uint16 i16_0x406; /* Rcv Fifo Ctrl */
- uint16 i16_0x408; /* Rx ctrl 1 */
- uint16 i16_0x41a; /* Rxe Status 1 */
- uint16 i16_0x41c; /* Rxe Status 2 */
- uint16 i16_0x424; /* rcv wrd count 0 */
- uint16 i16_0x426; /* rcv wrd count 1 */
- uint16 i16_0x456; /* RCV_LFIFO_STS */
- uint16 i16_0x480; /* PSM_SLP_TMR */
- uint16 i16_0x490; /* PSM BRC */
- uint16 i16_0x500; /* TXE CTRL */
- uint16 i16_0x50e; /* TXE Status */
- uint16 i16_0x55e; /* TXE_xmtdmabusy */
- uint16 i16_0x566; /* TXE_XMTfifosuspflush */
- uint16 i16_0x690; /* IFS Stat */
- uint16 i16_0x692; /* IFS_MEDBUSY_CTR */
- uint16 i16_0x694; /* IFS_TX_DUR */
- uint16 i16_0x6a0; /* SLow_CTL */
- uint16 i16_0x838; /* TXE_AQM fifo Ready */
- uint16 i16_0x8c0; /* Dagg ctrl */
- uint16 shm_prewds_cnt;
- uint16 shm_txtplufl_cnt;
- uint16 shm_txphyerr_cnt;
- uint16 pad;
- } hnd_ext_trap_psmwd_v1_t;
- typedef struct hnd_ext_trap_psmwd {
- uint16 xtag;
- uint16 version; /* version of the information following this */
- uint32 i32_maccontrol;
- uint32 i32_maccommand;
- uint32 i32_macintstatus;
- uint32 i32_phydebug;
- uint32 i32_clk_ctl_st;
- uint32 i32_psmdebug[PSMDBG_REG_READ_CNT_FOR_PSMWDTRAP_V2];
- uint16 i16_0x4b8; /* psm_brwk_0 */
- uint16 i16_0x4ba; /* psm_brwk_1 */
- uint16 i16_0x4bc; /* psm_brwk_2 */
- uint16 i16_0x4be; /* psm_brwk_2 */
- uint16 i16_0x1a8; /* gated clock en */
- uint16 i16_0x406; /* Rcv Fifo Ctrl */
- uint16 i16_0x408; /* Rx ctrl 1 */
- uint16 i16_0x41a; /* Rxe Status 1 */
- uint16 i16_0x41c; /* Rxe Status 2 */
- uint16 i16_0x424; /* rcv wrd count 0 */
- uint16 i16_0x426; /* rcv wrd count 1 */
- uint16 i16_0x456; /* RCV_LFIFO_STS */
- uint16 i16_0x480; /* PSM_SLP_TMR */
- uint16 i16_0x500; /* TXE CTRL */
- uint16 i16_0x50e; /* TXE Status */
- uint16 i16_0x55e; /* TXE_xmtdmabusy */
- uint16 i16_0x566; /* TXE_XMTfifosuspflush */
- uint16 i16_0x690; /* IFS Stat */
- uint16 i16_0x692; /* IFS_MEDBUSY_CTR */
- uint16 i16_0x694; /* IFS_TX_DUR */
- uint16 i16_0x6a0; /* SLow_CTL */
- uint16 i16_0x490; /* psm_brc */
- uint16 i16_0x4da; /* psm_brc_1 */
- uint16 i16_0x838; /* TXE_AQM fifo Ready */
- uint16 i16_0x8c0; /* Dagg ctrl */
- uint16 shm_prewds_cnt;
- uint16 shm_txtplufl_cnt;
- uint16 shm_txphyerr_cnt;
- } hnd_ext_trap_psmwd_t;
- #define HEAP_HISTOGRAM_DUMP_LEN 6
- #define HEAP_MAX_SZ_BLKS_LEN 2
- /* Ignore chunks for which there are fewer than this many instances, irrespective of size */
- #define HEAP_HISTOGRAM_INSTANCE_MIN 4
- /*
- * Use the last two length values for chunks larger than this, or when we run out of
- * histogram entries (because we have too many different sized chunks) to store "other"
- */
- #define HEAP_HISTOGRAM_SPECIAL 0xfffeu
- #define HEAP_HISTOGRAM_GRTR256K 0xffffu
- typedef struct hnd_ext_trap_heap_err {
- uint32 arena_total;
- uint32 heap_free;
- uint32 heap_inuse;
- uint32 mf_count;
- uint32 stack_lwm;
- uint16 heap_histogm[HEAP_HISTOGRAM_DUMP_LEN * 2]; /* size/number */
- uint16 max_sz_free_blk[HEAP_MAX_SZ_BLKS_LEN];
- } hnd_ext_trap_heap_err_t;
- #define MEM_TRAP_NUM_WLC_TX_QUEUES 6
- #define HND_EXT_TRAP_WLC_MEM_ERR_VER_V2 2
- typedef struct hnd_ext_trap_wlc_mem_err {
- uint8 instance;
- uint8 associated;
- uint8 soft_ap_client_cnt;
- uint8 peer_cnt;
- uint16 txqueue_len[MEM_TRAP_NUM_WLC_TX_QUEUES];
- } hnd_ext_trap_wlc_mem_err_t;
- typedef struct hnd_ext_trap_wlc_mem_err_v2 {
- uint16 version;
- uint16 pad;
- uint8 instance;
- uint8 stas_associated;
- uint8 aps_associated;
- uint8 soft_ap_client_cnt;
- uint16 txqueue_len[MEM_TRAP_NUM_WLC_TX_QUEUES];
- } hnd_ext_trap_wlc_mem_err_v2_t;
- #define HND_EXT_TRAP_WLC_MEM_ERR_VER_V3 3
- typedef struct hnd_ext_trap_wlc_mem_err_v3 {
- uint8 version;
- uint8 instance;
- uint8 stas_associated;
- uint8 aps_associated;
- uint8 soft_ap_client_cnt;
- uint8 peer_cnt;
- uint16 txqueue_len[MEM_TRAP_NUM_WLC_TX_QUEUES];
- } hnd_ext_trap_wlc_mem_err_v3_t;
- typedef struct hnd_ext_trap_pcie_mem_err {
- uint16 d2h_queue_len;
- uint16 d2h_req_queue_len;
- } hnd_ext_trap_pcie_mem_err_t;
- #define MAX_DMAFIFO_ENTRIES_V1 1
- #define MAX_DMAFIFO_DESC_ENTRIES_V1 2
- #define HND_EXT_TRAP_AXIERROR_SIGNATURE 0xbabebabe
- #define HND_EXT_TRAP_AXIERROR_VERSION_1 1
- /* Structure to collect debug info of descriptor entry for dma channel on encountering AXI Error */
- /* Below three structures are dependant, any change will bump version of all the three */
- typedef struct hnd_ext_trap_desc_entry_v1 {
- uint32 ctrl1; /* descriptor entry at din < misc control bits > */
- uint32 ctrl2; /* descriptor entry at din <buffer count and address extension> */
- uint32 addrlo; /* descriptor entry at din <address of data buffer, bits 31:0> */
- uint32 addrhi; /* descriptor entry at din <address of data buffer, bits 63:32> */
- } dma_dentry_v1_t;
- /* Structure to collect debug info about a dma channel on encountering AXI Error */
- typedef struct hnd_ext_trap_dma_fifo_v1 {
- uint8 valid; /* no of valid desc entries filled, non zero = fifo entry valid */
- uint8 direction; /* TX=1, RX=2, currently only using TX */
- uint16 index; /* Index of the DMA channel in system */
- uint32 dpa; /* Expected Address of Descriptor table from software state */
- uint32 desc_lo; /* Low Address of Descriptor table programmed in DMA register */
- uint32 desc_hi; /* High Address of Descriptor table programmed in DMA register */
- uint16 din; /* rxin / txin */
- uint16 dout; /* rxout / txout */
- dma_dentry_v1_t dentry[MAX_DMAFIFO_DESC_ENTRIES_V1]; /* Descriptor Entires */
- } dma_fifo_v1_t;
- typedef struct hnd_ext_trap_axi_error_v1 {
- uint8 version; /* version = 1 */
- uint8 dma_fifo_valid_count; /* Number of valid dma_fifo entries */
- uint16 length; /* length of whole structure */
- uint32 signature; /* indicate that its filled with AXI Error data */
- uint32 axi_errorlog_status; /* errlog_status from slave wrapper */
- uint32 axi_errorlog_core; /* errlog_core from slave wrapper */
- uint32 axi_errorlog_lo; /* errlog_lo from slave wrapper */
- uint32 axi_errorlog_hi; /* errlog_hi from slave wrapper */
- uint32 axi_errorlog_id; /* errlog_id from slave wrapper */
- dma_fifo_v1_t dma_fifo[MAX_DMAFIFO_ENTRIES_V1];
- } hnd_ext_trap_axi_error_v1_t;
- #define HND_EXT_TRAP_MACSUSP_INFO_VER 1
- typedef struct hnd_ext_trap_macsusp {
- uint16 xtag;
- uint8 version; /* version of the information following this */
- uint8 trap_reason;
- uint32 i32_maccontrol;
- uint32 i32_maccommand;
- uint32 i32_macintstatus;
- uint32 i32_phydebug[4];
- uint32 i32_psmdebug[8];
- uint16 i16_0x41a; /* Rxe Status 1 */
- uint16 i16_0x41c; /* Rxe Status 2 */
- uint16 i16_0x490; /* PSM BRC */
- uint16 i16_0x50e; /* TXE Status */
- uint16 i16_0x55e; /* TXE_xmtdmabusy */
- uint16 i16_0x566; /* TXE_XMTfifosuspflush */
- uint16 i16_0x690; /* IFS Stat */
- uint16 i16_0x692; /* IFS_MEDBUSY_CTR */
- uint16 i16_0x694; /* IFS_TX_DUR */
- uint16 i16_0x7c0; /* WEP CTL */
- uint16 i16_0x838; /* TXE_AQM fifo Ready */
- uint16 i16_0x880; /* MHP_status */
- uint16 shm_prewds_cnt;
- uint16 shm_ucode_dbgst;
- } hnd_ext_trap_macsusp_t;
- #define HND_EXT_TRAP_MACENAB_INFO_VER 1
- typedef struct hnd_ext_trap_macenab {
- uint16 xtag;
- uint8 version; /* version of the information following this */
- uint8 trap_reason;
- uint32 i32_maccontrol;
- uint32 i32_maccommand;
- uint32 i32_macintstatus;
- uint32 i32_psmdebug[8];
- uint32 i32_clk_ctl_st;
- uint32 i32_powerctl;
- uint16 i16_0x1a8; /* gated clock en */
- uint16 i16_0x480; /* PSM_SLP_TMR */
- uint16 i16_0x490; /* PSM BRC */
- uint16 i16_0x600; /* TSF CTL */
- uint16 i16_0x690; /* IFS Stat */
- uint16 i16_0x692; /* IFS_MEDBUSY_CTR */
- uint16 i16_0x6a0; /* SLow_CTL */
- uint16 i16_0x6a6; /* SLow_FRAC */
- uint16 i16_0x6a8; /* fast power up delay */
- uint16 i16_0x6aa; /* SLow_PER */
- uint16 shm_ucode_dbgst;
- uint16 PAD;
- } hnd_ext_trap_macenab_t;
- #define HND_EXT_TRAP_PHY_INFO_VER_1 (1)
- typedef struct hnd_ext_trap_phydbg {
- uint16 err;
- uint16 RxFeStatus;
- uint16 TxFIFOStatus0;
- uint16 TxFIFOStatus1;
- uint16 RfseqMode;
- uint16 RfseqStatus0;
- uint16 RfseqStatus1;
- uint16 RfseqStatus_Ocl;
- uint16 RfseqStatus_Ocl1;
- uint16 OCLControl1;
- uint16 TxError;
- uint16 bphyTxError;
- uint16 TxCCKError;
- uint16 TxCtrlWrd0;
- uint16 TxCtrlWrd1;
- uint16 TxCtrlWrd2;
- uint16 TxLsig0;
- uint16 TxLsig1;
- uint16 TxVhtSigA10;
- uint16 TxVhtSigA11;
- uint16 TxVhtSigA20;
- uint16 TxVhtSigA21;
- uint16 txPktLength;
- uint16 txPsdulengthCtr;
- uint16 gpioClkControl;
- uint16 gpioSel;
- uint16 pktprocdebug;
- uint16 PAD;
- uint32 gpioOut[3];
- } hnd_ext_trap_phydbg_t;
- /* unique IDs for separate cores in SI */
- #define REGDUMP_MASK_MAC0 BCM_BIT(1)
- #define REGDUMP_MASK_ARM BCM_BIT(2)
- #define REGDUMP_MASK_PCIE BCM_BIT(3)
- #define REGDUMP_MASK_MAC1 BCM_BIT(4)
- #define REGDUMP_MASK_PMU BCM_BIT(5)
- typedef struct {
- uint16 reg_offset;
- uint16 core_mask;
- } reg_dump_config_t;
- #define HND_EXT_TRAP_PHY_INFO_VER 2
- typedef struct hnd_ext_trap_phydbg_v2 {
- uint8 version;
- uint8 len;
- uint16 err;
- uint16 RxFeStatus;
- uint16 TxFIFOStatus0;
- uint16 TxFIFOStatus1;
- uint16 RfseqMode;
- uint16 RfseqStatus0;
- uint16 RfseqStatus1;
- uint16 RfseqStatus_Ocl;
- uint16 RfseqStatus_Ocl1;
- uint16 OCLControl1;
- uint16 TxError;
- uint16 bphyTxError;
- uint16 TxCCKError;
- uint16 TxCtrlWrd0;
- uint16 TxCtrlWrd1;
- uint16 TxCtrlWrd2;
- uint16 TxLsig0;
- uint16 TxLsig1;
- uint16 TxVhtSigA10;
- uint16 TxVhtSigA11;
- uint16 TxVhtSigA20;
- uint16 TxVhtSigA21;
- uint16 txPktLength;
- uint16 txPsdulengthCtr;
- uint16 gpioClkControl;
- uint16 gpioSel;
- uint16 pktprocdebug;
- uint32 gpioOut[3];
- uint32 additional_regs[1];
- } hnd_ext_trap_phydbg_v2_t;
- #define HND_EXT_TRAP_PHY_INFO_VER_3 (3)
- typedef struct hnd_ext_trap_phydbg_v3 {
- uint8 version;
- uint8 len;
- uint16 err;
- uint16 RxFeStatus;
- uint16 TxFIFOStatus0;
- uint16 TxFIFOStatus1;
- uint16 RfseqMode;
- uint16 RfseqStatus0;
- uint16 RfseqStatus1;
- uint16 RfseqStatus_Ocl;
- uint16 RfseqStatus_Ocl1;
- uint16 OCLControl1;
- uint16 TxError;
- uint16 bphyTxError;
- uint16 TxCCKError;
- uint16 TxCtrlWrd0;
- uint16 TxCtrlWrd1;
- uint16 TxCtrlWrd2;
- uint16 TxLsig0;
- uint16 TxLsig1;
- uint16 TxVhtSigA10;
- uint16 TxVhtSigA11;
- uint16 TxVhtSigA20;
- uint16 TxVhtSigA21;
- uint16 txPktLength;
- uint16 txPsdulengthCtr;
- uint16 gpioClkControl;
- uint16 gpioSel;
- uint16 pktprocdebug;
- uint32 gpioOut[3];
- uint16 HESigURateFlagStatus;
- uint16 HESigUsRateFlagStatus;
- uint32 additional_regs[1];
- } hnd_ext_trap_phydbg_v3_t;
- /* Phy TxErr Dump Structure */
- #define HND_EXT_TRAP_PHYTXERR_INFO_VER 1
- #define HND_EXT_TRAP_PHYTXERR_INFO_VER_V2 2
- typedef struct hnd_ext_trap_macphytxerr {
- uint8 version; /* version of the information following this */
- uint8 trap_reason;
- uint16 i16_0x63E; /* tsf_tmr_rx_ts */
- uint16 i16_0x640; /* tsf_tmr_tx_ts */
- uint16 i16_0x642; /* tsf_tmr_rx_end_ts */
- uint16 i16_0x846; /* TDC_FrmLen0 */
- uint16 i16_0x848; /* TDC_FrmLen1 */
- uint16 i16_0x84a; /* TDC_Txtime */
- uint16 i16_0xa5a; /* TXE_BytCntInTxFrmLo */
- uint16 i16_0xa5c; /* TXE_BytCntInTxFrmHi */
- uint16 i16_0x856; /* TDC_VhtPsduLen0 */
- uint16 i16_0x858; /* TDC_VhtPsduLen1 */
- uint16 i16_0x490; /* psm_brc */
- uint16 i16_0x4d8; /* psm_brc_1 */
- uint16 shm_txerr_reason;
- uint16 shm_pctl0;
- uint16 shm_pctl1;
- uint16 shm_pctl2;
- uint16 shm_lsig0;
- uint16 shm_lsig1;
- uint16 shm_plcp0;
- uint16 shm_plcp1;
- uint16 shm_plcp2;
- uint16 shm_vht_sigb0;
- uint16 shm_vht_sigb1;
- uint16 shm_tx_tst;
- uint16 shm_txerr_tm;
- uint16 shm_curchannel;
- uint16 shm_crx_rxtsf_pos;
- uint16 shm_lasttx_tsf;
- uint16 shm_s_rxtsftmrval;
- uint16 i16_0x29; /* Phy indirect address */
- uint16 i16_0x2a; /* Phy indirect address */
- } hnd_ext_trap_macphytxerr_t;
- typedef struct hnd_ext_trap_macphytxerr_v2 {
- uint8 version; /* version of the information following this */
- uint8 trap_reason;
- uint16 i16_0x63E; /* tsf_tmr_rx_ts */
- uint16 i16_0x640; /* tsf_tmr_tx_ts */
- uint16 i16_0x642; /* tsf_tmr_rx_end_ts */
- uint16 i16_0x846; /* TDC_FrmLen0 */
- uint16 i16_0x848; /* TDC_FrmLen1 */
- uint16 i16_0x84a; /* TDC_Txtime */
- uint16 i16_0xa5a; /* TXE_BytCntInTxFrmLo */
- uint16 i16_0xa5c; /* TXE_BytCntInTxFrmHi */
- uint16 i16_0x856; /* TDC_VhtPsduLen0 */
- uint16 i16_0x858; /* TDC_VhtPsduLen1 */
- uint16 i16_0x490; /* psm_brc */
- uint16 i16_0x4d8; /* psm_brc_1 */
- uint16 shm_txerr_reason;
- uint16 shm_pctl0;
- uint16 shm_pctl1;
- uint16 shm_pctl2;
- uint16 shm_lsig0;
- uint16 shm_lsig1;
- uint16 shm_plcp0;
- uint16 shm_plcp1;
- uint16 shm_plcp2;
- uint16 shm_vht_sigb0;
- uint16 shm_vht_sigb1;
- uint16 shm_tx_tst;
- uint16 shm_txerr_tm;
- uint16 shm_curchannel;
- uint16 shm_crx_rxtsf_pos;
- uint16 shm_lasttx_tsf;
- uint16 shm_s_rxtsftmrval;
- uint16 i16_0x29; /* Phy indirect address */
- uint16 i16_0x2a; /* Phy indirect address */
- uint8 phyerr_bmac_cnt; /* number of times bmac raised phy tx err */
- uint8 phyerr_bmac_rsn; /* bmac reason for phy tx error */
- uint16 pad;
- uint32 recv_fifo_status[3][2]; /* Rcv Status0 & Rcv Status1 for 3 Rx fifos */
- } hnd_ext_trap_macphytxerr_v2_t;
- #define HND_EXT_TRAP_PCIE_ERR_ATTN_VER_1 (1u)
- #define MAX_AER_HDR_LOG_REGS (4u)
- typedef struct hnd_ext_trap_pcie_err_attn_v1 {
- uint8 version;
- uint8 pad[3];
- uint32 err_hdr_logreg1;
- uint32 err_hdr_logreg2;
- uint32 err_hdr_logreg3;
- uint32 err_hdr_logreg4;
- uint32 err_code_logreg;
- uint32 err_type;
- uint32 err_code_state;
- uint32 last_err_attn_ts;
- uint32 cfg_tlp_hdr[MAX_AER_HDR_LOG_REGS];
- } hnd_ext_trap_pcie_err_attn_v1_t;
- #define MAX_EVENTLOG_BUFFERS 48
- typedef struct eventlog_trapdata_info {
- uint32 num_elements;
- uint32 seq_num;
- uint32 log_arr_addr;
- } eventlog_trapdata_info_t;
- typedef struct eventlog_trap_buf_info {
- uint32 len;
- uint32 buf_addr;
- } eventlog_trap_buf_info_t;
- #if defined(ETD) && !defined(WLETD)
- #define ETD_SW_FLAG_MEM 0x00000001
- int etd_init(osl_t *osh);
- int etd_register_trap_ext_callback(void *cb, void *arg);
- int (etd_register_trap_ext_callback_late)(void *cb, void *arg);
- uint32 *etd_get_trap_ext_data(void);
- uint32 etd_get_trap_ext_swflags(void);
- void etd_set_trap_ext_swflag(uint32 flag);
- void etd_notify_trap_ext_callback(trap_t *tr);
- reg_dump_config_t *etd_get_reg_dump_config_tbl(void);
- uint etd_get_reg_dump_config_len(void);
- extern bool _etd_enab;
- #define ETD_ENAB(pub) (_etd_enab)
- #else
- #define ETD_ENAB(pub) (0)
- #endif /* WLETD */
- #endif /* !LANGUAGE_ASSEMBLY */
- #endif /* _ETD_H_ */
|