17e6ad46Vishal Kulkarni/* 27e6ad46Vishal Kulkarni * This file and its contents are supplied under the terms of the 37e6ad46Vishal Kulkarni * Common Development and Distribution License ("CDDL"), version 1.0. 47e6ad46Vishal Kulkarni * You may only use this file in accordance with the terms of version 57e6ad46Vishal Kulkarni * 1.0 of the CDDL. 67e6ad46Vishal Kulkarni * 77e6ad46Vishal Kulkarni * A full copy of the text of the CDDL should have accompanied this 87e6ad46Vishal Kulkarni * source. A copy of the CDDL is also available via the Internet at 97e6ad46Vishal Kulkarni * http://www.illumos.org/license/CDDL. 107e6ad46Vishal Kulkarni */ 117e6ad46Vishal Kulkarni 127e6ad46Vishal Kulkarni/*- 137e6ad46Vishal Kulkarni * Copyright (c) 2017 Chelsio Communications, Inc. 147e6ad46Vishal Kulkarni * All rights reserved. 157e6ad46Vishal Kulkarni * 167e6ad46Vishal Kulkarni * Redistribution and use in source and binary forms, with or without 177e6ad46Vishal Kulkarni * modification, are permitted provided that the following conditions 187e6ad46Vishal Kulkarni * are met: 197e6ad46Vishal Kulkarni * 1. Redistributions of source code must retain the above copyright 207e6ad46Vishal Kulkarni * notice, this list of conditions and the following disclaimer. 217e6ad46Vishal Kulkarni * 2. Redistributions in binary form must reproduce the above copyright 227e6ad46Vishal Kulkarni * notice, this list of conditions and the following disclaimer in the 237e6ad46Vishal Kulkarni * documentation and/or other materials provided with the distribution. 247e6ad46Vishal Kulkarni * 257e6ad46Vishal Kulkarni * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 267e6ad46Vishal Kulkarni * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 277e6ad46Vishal Kulkarni * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 287e6ad46Vishal Kulkarni * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 297e6ad46Vishal Kulkarni * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 307e6ad46Vishal Kulkarni * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 317e6ad46Vishal Kulkarni * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 327e6ad46Vishal Kulkarni * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 337e6ad46Vishal Kulkarni * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 347e6ad46Vishal Kulkarni * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 357e6ad46Vishal Kulkarni * SUCH DAMAGE. 367e6ad46Vishal Kulkarni */ 377e6ad46Vishal Kulkarni 387e6ad46Vishal Kulkarni#ifndef __CUDBG_ENTITY_H__ 397e6ad46Vishal Kulkarni#define __CUDBG_ENTITY_H__ 407e6ad46Vishal Kulkarni 417e6ad46Vishal Kulkarni#include "common.h" 427e6ad46Vishal Kulkarni 437e6ad46Vishal Kulkarni#ifdef __GNUC__ 447e6ad46Vishal Kulkarni#define ATTRIBUTE_UNUSED __attribute__ ((unused)) 457e6ad46Vishal Kulkarni#else 467e6ad46Vishal Kulkarni#define ATTRIBUTE_UNUSED 477e6ad46Vishal Kulkarni#endif 487e6ad46Vishal Kulkarni 497e6ad46Vishal Kulkarni#define MC0_FLAG 1 507e6ad46Vishal Kulkarni#define MC1_FLAG 2 517e6ad46Vishal Kulkarni#define EDC0_FLAG 3 527e6ad46Vishal Kulkarni#define EDC1_FLAG 4 537e6ad46Vishal Kulkarni 547e6ad46Vishal Kulkarni#define NUM_PCIE_CONFIG_REGS 0x61 557e6ad46Vishal Kulkarni#define CUDBG_CTXT_SIZE_BYTES 24 567e6ad46Vishal Kulkarni#define CUDBG_MAX_INGRESS_QIDS 65536 577e6ad46Vishal Kulkarni#define CUDBG_MAX_FL_QIDS 2048 587e6ad46Vishal Kulkarni#define CUDBG_MAX_CNM_QIDS 1024 597e6ad46Vishal Kulkarni#define CUDBG_LOWMEM_MAX_CTXT_QIDS 256 607e6ad46Vishal Kulkarni#define ETH_ALEN 6 617e6ad46Vishal Kulkarni#define CUDBG_MAX_RPLC_SIZE 128 627e6ad46Vishal Kulkarni#define CUDBG_NUM_REQ_REGS 17 637e6ad46Vishal Kulkarni#define CUDBG_MAX_TCAM_TID 0x800 647e6ad46Vishal Kulkarni#define CUDBG_NUM_ULPTX 11 657e6ad46Vishal Kulkarni 667e6ad46Vishal Kulkarni#define SN_REG_ADDR 0x183f 677e6ad46Vishal Kulkarni#define BN_REG_ADDR 0x1819 687e6ad46Vishal Kulkarni#define NA_REG_ADDR 0x185a 697e6ad46Vishal Kulkarni#define MN_REG_ADDR 0x1803 707e6ad46Vishal Kulkarni 717e6ad46Vishal Kulkarni#define A_MPS_VF_RPLCT_MAP0 0x1111c 727e6ad46Vishal Kulkarni#define A_MPS_VF_RPLCT_MAP1 0x11120 737e6ad46Vishal Kulkarni#define A_MPS_VF_RPLCT_MAP2 0x11124 747e6ad46Vishal Kulkarni#define A_MPS_VF_RPLCT_MAP3 0x11128 757e6ad46Vishal Kulkarni#define A_MPS_VF_RPLCT_MAP4 0x11300 767e6ad46Vishal Kulkarni#define A_MPS_VF_RPLCT_MAP5 0x11304 777e6ad46Vishal Kulkarni#define A_MPS_VF_RPLCT_MAP6 0x11308 787e6ad46Vishal Kulkarni#define A_MPS_VF_RPLCT_MAP7 0x1130c 797e6ad46Vishal Kulkarni 807e6ad46Vishal Kulkarni#define PORT_TYPE_ADDR 0x1869 817e6ad46Vishal Kulkarni#define PORT_TYPE_LEN 8 827e6ad46Vishal Kulkarni 837e6ad46Vishal Kulkarni/* For T6 */ 847e6ad46Vishal Kulkarni#define SN_T6_ADDR 0x83f 857e6ad46Vishal Kulkarni#define BN_T6_ADDR 0x819 867e6ad46Vishal Kulkarni#define NA_T6_ADDR 0x85a 877e6ad46Vishal Kulkarni#define MN_T6_ADDR 0x803 887e6ad46Vishal Kulkarni 897e6ad46Vishal Kulkarni#define SN_MAX_LEN 24 907e6ad46Vishal Kulkarni#define BN_MAX_LEN 16 917e6ad46Vishal Kulkarni#define NA_MAX_LEN 12 927e6ad46Vishal Kulkarni#define MN_MAX_LEN 16 937e6ad46Vishal Kulkarni#define MAX_VPD_DATA_LEN 32 947e6ad46Vishal Kulkarni 957e6ad46Vishal Kulkarni#define VPD_VER_ADDR 0x18c7 967e6ad46Vishal Kulkarni#define VPD_VER_LEN 2 977e6ad46Vishal Kulkarni#define SCFG_VER_ADDR 0x06 987e6ad46Vishal Kulkarni#define SCFG_VER_LEN 4 997e6ad46Vishal Kulkarni 1007e6ad46Vishal Kulkarni#define CUDBG_CIM_BUSY_BIT (1 << 17) 1017e6ad46Vishal Kulkarni 1027e6ad46Vishal Kulkarni#define CUDBG_CHAC_PBT_ADDR 0x2800 1037e6ad46Vishal Kulkarni#define CUDBG_CHAC_PBT_LRF 0x3000 1047e6ad46Vishal Kulkarni#define CUDBG_CHAC_PBT_DATA 0x3800 1057e6ad46Vishal Kulkarni#define CUDBG_PBT_DYNAMIC_ENTRIES 8 1067e6ad46Vishal Kulkarni#define CUDBG_PBT_STATIC_ENTRIES 16 1077e6ad46Vishal Kulkarni#define CUDBG_LRF_ENTRIES 8 1087e6ad46Vishal Kulkarni#define CUDBG_PBT_DATA_ENTRIES 512 1097e6ad46Vishal Kulkarni 1107e6ad46Vishal Kulkarni#define CUDBG_ENTITY_SIGNATURE 0xCCEDB001 1117e6ad46Vishal Kulkarni#define CUDBG_TID_INFO_REV 1 1127e6ad46Vishal Kulkarni#define CUDBG_MAC_STATS_REV 1 1137e6ad46Vishal Kulkarni#define CUDBG_ULPTX_LA_REV 1 1147e6ad46Vishal Kulkarni#define CUDBG_MEMINFO_REV 1 1157e6ad46Vishal Kulkarni 1167e6ad46Vishal Kulkarni#define CUDBG_ULPTX_LA_REV 1 1177e6ad46Vishal Kulkarni 1187e6ad46Vishal Kulkarni#define CUDBG_T6_CLIP 1536 1197e6ad46Vishal Kulkarni#define CUDBG_MAX_TID_COMP_EN 6144 1207e6ad46Vishal Kulkarni#define CUDBG_MAX_TID_COMP_DIS 3072 1217e6ad46Vishal Kulkarni#define CUDBG_NUM_ULPTX_READ 512 1227e6ad46Vishal Kulkarni#define CUDBG_NUM_ULPTX_ASIC 6 1237e6ad46Vishal Kulkarni#define CUDBG_NUM_ULPTX_ASIC_READ 128 1247e6ad46Vishal Kulkarni 1257e6ad46Vishal Kulkarni#ifndef ARRAY_SIZE 1267e6ad46Vishal Kulkarni#define ARRAY_SIZE(_a) (sizeof((_a)) / sizeof((_a)[0])) 1277e6ad46Vishal Kulkarni#endif 1287e6ad46Vishal Kulkarni 1297e6ad46Vishal Kulkarnienum cudbg_qdesc_qtype { 1307e6ad46Vishal Kulkarni CUDBG_QTYPE_UNKNOWN = 0, 1317e6ad46Vishal Kulkarni CUDBG_QTYPE_NIC_TXQ, 1327e6ad46Vishal Kulkarni CUDBG_QTYPE_NIC_RXQ, 1337e6ad46Vishal Kulkarni CUDBG_QTYPE_NIC_FLQ, 1347e6ad46Vishal Kulkarni CUDBG_QTYPE_CTRLQ, 1357e6ad46Vishal Kulkarni CUDBG_QTYPE_FWEVTQ, 1367e6ad46Vishal Kulkarni CUDBG_QTYPE_INTRQ, 1377e6ad46Vishal Kulkarni CUDBG_QTYPE_PTP_TXQ, 1387e6ad46Vishal Kulkarni CUDBG_QTYPE_OFLD_TXQ, 1397e6ad46Vishal Kulkarni CUDBG_QTYPE_RDMA_RXQ, 1407e6ad46Vishal Kulkarni CUDBG_QTYPE_RDMA_FLQ, 1417e6ad46Vishal Kulkarni CUDBG_QTYPE_RDMA_CIQ, 1427e6ad46Vishal Kulkarni CUDBG_QTYPE_ISCSI_RXQ, 1437e6ad46Vishal Kulkarni CUDBG_QTYPE_ISCSI_FLQ, 1447e6ad46Vishal Kulkarni CUDBG_QTYPE_ISCSIT_RXQ, 1457e6ad46Vishal Kulkarni CUDBG_QTYPE_ISCSIT_FLQ, 1467e6ad46Vishal Kulkarni CUDBG_QTYPE_CRYPTO_TXQ, 1477e6ad46Vishal Kulkarni CUDBG_QTYPE_CRYPTO_RXQ, 1487e6ad46Vishal Kulkarni CUDBG_QTYPE_CRYPTO_FLQ, 1497e6ad46Vishal Kulkarni CUDBG_QTYPE_TLS_RXQ, 1507e6ad46Vishal Kulkarni CUDBG_QTYPE_TLS_FLQ, 1517e6ad46Vishal Kulkarni CUDBG_QTYPE_MAX, 1527e6ad46Vishal Kulkarni}; 1537e6ad46Vishal Kulkarni 1547e6ad46Vishal Kulkarnistruct cudbg_pbt_tables { 1557e6ad46Vishal Kulkarni u32 pbt_dynamic[CUDBG_PBT_DYNAMIC_ENTRIES]; 1567e6ad46Vishal Kulkarni u32 pbt_static[CUDBG_PBT_STATIC_ENTRIES]; 1577e6ad46Vishal Kulkarni u32 lrf_table[CUDBG_LRF_ENTRIES]; 1587e6ad46Vishal Kulkarni u32 pbt_data[CUDBG_PBT_DATA_ENTRIES]; 1597e6ad46Vishal Kulkarni}; 1607e6ad46Vishal Kulkarni 1617e6ad46Vishal Kulkarnistruct card_mem { 1627e6ad46Vishal Kulkarni u16 size_mc0; 1637e6ad46Vishal Kulkarni u16 size_mc1; 1647e6ad46Vishal Kulkarni u16 size_edc0; 1657e6ad46Vishal Kulkarni u16 size_edc1; 1667e6ad46Vishal Kulkarni u16 mem_flag; 1677e6ad46Vishal Kulkarni u16 res; 1687e6ad46Vishal Kulkarni}; 1697e6ad46Vishal Kulkarni 1707e6ad46Vishal Kulkarnistruct rss_pf_conf { 1717e6ad46Vishal Kulkarni u32 rss_pf_map; 1727e6ad46Vishal Kulkarni u32 rss_pf_mask; 1737e6ad46Vishal Kulkarni u32 rss_pf_config; 1747e6ad46Vishal Kulkarni}; 1757e6ad46Vishal Kulkarni 1767e6ad46Vishal Kulkarnistruct cudbg_ch_cntxt { 1777e6ad46Vishal Kulkarni uint32_t cntxt_type; 1787e6ad46Vishal Kulkarni uint32_t cntxt_id; 1797e6ad46Vishal Kulkarni uint32_t data[SGE_CTXT_SIZE / 4]; 1807e6ad46Vishal Kulkarni}; 1817e6ad46Vishal Kulkarni 1827e6ad46Vishal Kulkarnistruct cudbg_tcam { 1837e6ad46Vishal Kulkarni u32 filter_start; 1847e6ad46Vishal Kulkarni u32 server_start; 1857e6ad46Vishal Kulkarni u32 clip_start; 1867e6ad46Vishal Kulkarni u32 routing_start; 1877e6ad46Vishal Kulkarni u32 tid_hash_base; 1887e6ad46Vishal Kulkarni u32 max_tid; 1897e6ad46Vishal Kulkarni}; 1907e6ad46Vishal Kulkarni 1917e6ad46Vishal Kulkarnistruct cudbg_mbox_log { 1927e6ad46Vishal Kulkarni struct mbox_cmd entry; 1937e6ad46Vishal Kulkarni u32 hi[MBOX_LEN / 8]; 1947e6ad46Vishal Kulkarni u32 lo[MBOX_LEN / 8]; 1957e6ad46Vishal Kulkarni}; 1967e6ad46Vishal Kulkarni 1977e6ad46Vishal Kulkarnistruct cudbg_tid_data { 1987e6ad46Vishal Kulkarni u32 tid; 1997e6ad46Vishal Kulkarni u32 dbig_cmd; 2007e6ad46Vishal Kulkarni u32 dbig_conf; 2017e6ad46Vishal Kulkarni u32 dbig_rsp_stat; 2027e6ad46Vishal Kulkarni u32 data[CUDBG_NUM_REQ_REGS]; 2037e6ad46Vishal Kulkarni}; 2047e6ad46Vishal Kulkarni 2057e6ad46Vishal Kulkarnistruct cudbg_cntxt_field { 2067e6ad46Vishal Kulkarni char *name; 2077e6ad46Vishal Kulkarni u32 start_bit; 2087e6ad46Vishal Kulkarni u32 end_bit; 2097e6ad46Vishal Kulkarni u32 shift; 2107e6ad46Vishal Kulkarni u32 islog2; 2117e6ad46Vishal Kulkarni}; 2127e6ad46Vishal Kulkarni 2137e6ad46Vishal Kulkarnistruct cudbg_mps_tcam { 2147e6ad46Vishal Kulkarni u64 mask; 2157e6ad46Vishal Kulkarni u32 rplc[8]; 2167e6ad46Vishal Kulkarni u32 idx; 2177e6ad46Vishal Kulkarni u32 cls_lo; 2187e6ad46Vishal Kulkarni u32 cls_hi; 2197e6ad46Vishal Kulkarni u32 rplc_size; 2207e6ad46Vishal Kulkarni u32 vniy; 2217e6ad46Vishal Kulkarni u32 vnix; 2227e6ad46Vishal Kulkarni u32 dip_hit; 2237e6ad46Vishal Kulkarni u32 vlan_vld; 2247e6ad46Vishal Kulkarni u32 repli; 2257e6ad46Vishal Kulkarni u16 ivlan; 2267e6ad46Vishal Kulkarni u8 addr[ETH_ALEN]; 2277e6ad46Vishal Kulkarni u8 lookup_type; 2287e6ad46Vishal Kulkarni u8 port_num; 2297e6ad46Vishal Kulkarni u8 reserved[2]; 2307e6ad46Vishal Kulkarni}; 2317e6ad46Vishal Kulkarni 2327e6ad46Vishal Kulkarnistruct rss_vf_conf { 2337e6ad46Vishal Kulkarni u32 rss_vf_vfl; 2347e6ad46Vishal Kulkarni u32 rss_vf_vfh; 2357e6ad46Vishal Kulkarni}; 2367e6ad46Vishal Kulkarni 2377e6ad46Vishal Kulkarnistruct rss_config { 2387e6ad46Vishal Kulkarni u32 tp_rssconf; /* A_TP_RSS_CONFIG */ 2397e6ad46Vishal Kulkarni u32 tp_rssconf_tnl; /* A_TP_RSS_CONFIG_TNL */ 2407e6ad46Vishal Kulkarni u32 tp_rssconf_ofd; /* A_TP_RSS_CONFIG_OFD */ 2417e6ad46Vishal Kulkarni u32 tp_rssconf_syn; /* A_TP_RSS_CONFIG_SYN */ 2427e6ad46Vishal Kulkarni u32 tp_rssconf_vrt; /* A_TP_RSS_CONFIG_VRT */ 2437e6ad46Vishal Kulkarni u32 tp_rssconf_cng; /* A_TP_RSS_CONFIG_CNG */ 2447e6ad46Vishal Kulkarni u32 chip; 2457e6ad46Vishal Kulkarni}; 2467e6ad46Vishal Kulkarni 2477e6ad46Vishal Kulkarnistruct struct_pm_stats { 2487e6ad46Vishal Kulkarni u32 tx_cnt[T6_PM_NSTATS]; 2497e6ad46Vishal Kulkarni u32 rx_cnt[T6_PM_NSTATS]; 2507e6ad46Vishal Kulkarni u64 tx_cyc[T6_PM_NSTATS]; 2517e6ad46Vishal Kulkarni u64 rx_cyc[T6_PM_NSTATS]; 2527e6ad46Vishal Kulkarni}; 2537e6ad46Vishal Kulkarni 2547e6ad46Vishal Kulkarnistruct struct_hw_sched { 2557e6ad46Vishal Kulkarni u32 kbps[NTX_SCHED]; 2567e6ad46Vishal Kulkarni u32 ipg[NTX_SCHED]; 2577e6ad46Vishal Kulkarni u32 pace_tab[NTX_SCHED]; 2587e6ad46Vishal Kulkarni u32 mode; 2597e6ad46Vishal Kulkarni u32 map; 2607e6ad46Vishal Kulkarni}; 2617e6ad46Vishal Kulkarni 2627e6ad46Vishal Kulkarnistruct struct_tcp_stats { 2637e6ad46Vishal Kulkarni struct tp_tcp_stats v4, v6; 2647e6ad46Vishal Kulkarni}; 2657e6ad46Vishal Kulkarni 2667e6ad46Vishal Kulkarnistruct struct_tp_err_stats { 2677e6ad46Vishal Kulkarni struct tp_err_stats stats; 2687e6ad46Vishal Kulkarni u32 nchan; 2697e6ad46Vishal Kulkarni}; 2707e6ad46Vishal Kulkarni 2717e6ad46Vishal Kulkarnistruct struct_tp_fcoe_stats { 2727e6ad46Vishal Kulkarni struct tp_fcoe_stats stats[4]; 2737e6ad46Vishal Kulkarni u32 nchan; 2747e6ad46Vishal Kulkarni}; 2757e6ad46Vishal Kulkarni 2767e6ad46Vishal Kulkarnistruct struct_mac_stats { 2777e6ad46Vishal Kulkarni u32 port_count; 2787e6ad46Vishal Kulkarni struct port_stats stats[4]; 2797e6ad46Vishal Kulkarni}; 2807e6ad46Vishal Kulkarni 2817e6ad46Vishal Kulkarnistruct struct_mac_stats_rev1 { 2827e6ad46Vishal Kulkarni struct cudbg_ver_hdr ver_hdr; 2837e6ad46Vishal Kulkarni u32 port_count; 2847e6ad46Vishal Kulkarni u32 reserved; 2857e6ad46Vishal Kulkarni struct port_stats stats[4]; 2867e6ad46Vishal Kulkarni}; 2877e6ad46Vishal Kulkarni 2887e6ad46Vishal Kulkarnistruct struct_tp_cpl_stats { 2897e6ad46Vishal Kulkarni struct tp_cpl_stats stats; 2907e6ad46Vishal Kulkarni u32 nchan; 2917e6ad46Vishal Kulkarni}; 2927e6ad46Vishal Kulkarni 2937e6ad46Vishal Kulkarnistruct struct_wc_stats { 2947e6ad46Vishal Kulkarni u32 wr_cl_success; 2957e6ad46Vishal Kulkarni u32 wr_cl_fail; 2967e6ad46Vishal Kulkarni}; 2977e6ad46Vishal Kulkarni 2987e6ad46Vishal Kulkarnistruct struct_ulptx_la { 2997e6ad46Vishal Kulkarni u32 rdptr[CUDBG_NUM_ULPTX]; 3007e6ad46Vishal Kulkarni u32 wrptr[CUDBG_NUM_ULPTX]; 3017e6ad46Vishal Kulkarni u32 rddata[CUDBG_NUM_ULPTX]; 3027e6ad46Vishal Kulkarni u32 rd_data[CUDBG_NUM_ULPTX][CUDBG_NUM_ULPTX_READ]; 3037e6ad46Vishal Kulkarni u32 rdptr_asic[CUDBG_NUM_ULPTX_ASIC_READ]; 3047e6ad46Vishal Kulkarni u32 rddata_asic[CUDBG_NUM_ULPTX_ASIC_READ][CUDBG_NUM_ULPTX_ASIC]; 3057e6ad46Vishal Kulkarni}; 3067e6ad46Vishal Kulkarni 3077e6ad46Vishal Kulkarnistruct struct_ulprx_la { 3087e6ad46Vishal Kulkarni u32 data[ULPRX_LA_SIZE * 8]; 3097e6ad46Vishal Kulkarni u32 size; 3107e6ad46Vishal Kulkarni}; 3117e6ad46Vishal Kulkarni 3127e6ad46Vishal Kulkarnistruct struct_cim_qcfg { 3137e6ad46Vishal Kulkarni u8 chip; 3147e6ad46Vishal Kulkarni u16 base[CIM_NUM_IBQ + CIM_NUM_OBQ_T5]; 3157e6ad46Vishal Kulkarni u16 size[CIM_NUM_IBQ + CIM_NUM_OBQ_T5]; 3167e6ad46Vishal Kulkarni u16 thres[CIM_NUM_IBQ]; 3177e6ad46Vishal Kulkarni u32 obq_wr[2 * CIM_NUM_OBQ_T5]; 3187e6ad46Vishal Kulkarni u32 stat[4 * (CIM_NUM_IBQ + CIM_NUM_OBQ_T5)]; 3197e6ad46Vishal Kulkarni}; 3207e6ad46Vishal Kulkarni 3217e6ad46Vishal Kulkarnienum region_index { 3227e6ad46Vishal Kulkarni REGN_DBQ_CONTEXS_IDX, 3237e6ad46Vishal Kulkarni REGN_IMSG_CONTEXTS_IDX, 3247e6ad46Vishal Kulkarni REGN_FLM_CACHE_IDX, 3257e6ad46Vishal Kulkarni REGN_TCBS_IDX, 3267e6ad46Vishal Kulkarni REGN_PSTRUCT_IDX, 3277e6ad46Vishal Kulkarni REGN_TIMERS_IDX, 3287e6ad46Vishal Kulkarni REGN_RX_FL_IDX, 3297e6ad46Vishal Kulkarni REGN_TX_FL_IDX, 3307e6ad46Vishal Kulkarni REGN_PSTRUCT_FL_IDX, 3317e6ad46Vishal Kulkarni REGN_TX_PAYLOAD_IDX, 3327e6ad46Vishal Kulkarni REGN_RX_PAYLOAD_IDX, 3337e6ad46Vishal Kulkarni REGN_LE_HASH_IDX, 3347e6ad46Vishal Kulkarni REGN_ISCSI_IDX, 3357e6ad46Vishal Kulkarni REGN_TDDP_IDX, 3367e6ad46Vishal Kulkarni REGN_TPT_IDX, 3377e6ad46Vishal Kulkarni REGN_STAG_IDX, 3387e6ad46Vishal Kulkarni REGN_RQ_IDX, 3397e6ad46Vishal Kulkarni REGN_RQUDP_IDX, 3407e6ad46Vishal Kulkarni REGN_PBL_IDX, 3417e6ad46Vishal Kulkarni REGN_TXPBL_IDX, 3427e6ad46Vishal Kulkarni REGN_DBVFIFO_IDX, 3437e6ad46Vishal Kulkarni REGN_ULPRX_STATE_IDX, 3447e6ad46Vishal Kulkarni REGN_ULPTX_STATE_IDX, 3457e6ad46Vishal Kulkarni#ifndef __NO_DRIVER_OCQ_SUPPORT__ 3467e6ad46Vishal Kulkarni REGN_ON_CHIP_Q_IDX, 3477e6ad46Vishal Kulkarni#endif 3487e6ad46Vishal Kulkarni}; 3497e6ad46Vishal Kulkarni 3507e6ad46Vishal Kulkarnistruct cudbg_qdesc_info { 3517e6ad46Vishal Kulkarni u32 qdesc_entry_size; 3527e6ad46Vishal Kulkarni u32 num_queues; 3537e6ad46Vishal Kulkarni u8 data[0]; /* Must be last */ 3547e6ad46Vishal Kulkarni}; 3557e6ad46Vishal Kulkarni 3567e6ad46Vishal Kulkarnistatic const char * const region[] = { 3577e6ad46Vishal Kulkarni "DBQ contexts:", "IMSG contexts:", "FLM cache:", "TCBs:", 3587e6ad46Vishal Kulkarni "Pstructs:", "Timers:", "Rx FL:", "Tx FL:", "Pstruct FL:", 3597e6ad46Vishal Kulkarni "Tx payload:", "Rx payload:", "LE hash:", "iSCSI region:", 3607e6ad46Vishal Kulkarni "TDDP region:", "TPT region:", "STAG region:", "RQ region:", 3617e6ad46Vishal Kulkarni "RQUDP region:", "PBL region:", "TXPBL region:", 3627e6ad46Vishal Kulkarni "DBVFIFO region:", "ULPRX state:", "ULPTX state:", 3637e6ad46Vishal Kulkarni#ifndef __NO_DRIVER_OCQ_SUPPORT__ 3647e6ad46Vishal Kulkarni "On-chip queues:" 3657e6ad46Vishal Kulkarni#endif 3667e6ad46Vishal Kulkarni}; 3677e6ad46Vishal Kulkarni 3687e6ad46Vishal Kulkarni/* Info relative to memory region (i.e. wrt 0). */ 3697e6ad46Vishal Kulkarnistruct struct_region_info { 3707e6ad46Vishal Kulkarni bool exist; /* Does region exists in current memory region? */ 3717e6ad46Vishal Kulkarni u32 start; /* Start wrt 0 */ 3727e6ad46Vishal Kulkarni u32 end; /* End wrt 0 */ 3737e6ad46Vishal Kulkarni}; 3747e6ad46Vishal Kulkarni 3757e6ad46Vishal Kulkarnistruct struct_port_usage { 3767e6ad46Vishal Kulkarni u32 id; 3777e6ad46Vishal Kulkarni u32 used; 3787e6ad46Vishal Kulkarni u32 alloc; 3797e6ad46Vishal Kulkarni}; 3807e6ad46Vishal Kulkarni 3817e6ad46Vishal Kulkarnistruct struct_lpbk_usage { 3827e6ad46Vishal Kulkarni u32 id; 3837e6ad46Vishal Kulkarni u32 used; 3847e6ad46Vishal Kulkarni u32 alloc; 3857e6ad46Vishal Kulkarni}; 3867e6ad46Vishal Kulkarni 3877e6ad46Vishal Kulkarnistruct struct_mem_desc { 3887e6ad46Vishal Kulkarni u32 base; 3897e6ad46Vishal Kulkarni u32 limit; 3907e6ad46Vishal Kulkarni u32 idx; 3917e6ad46Vishal Kulkarni}; 3927e6ad46Vishal Kulkarni 3937e6ad46Vishal Kulkarnienum string_size_units { 3947e6ad46Vishal Kulkarni STRING_UNITS_10, /* use powers of 10^3 (standard SI) */ 3957e6ad46Vishal Kulkarni STRING_UNITS_2, /* use binary powers of 2^10 */ 3967e6ad46Vishal Kulkarni}; 3977e6ad46Vishal Kulkarni 3987e6ad46Vishal Kulkarnistruct struct_meminfo { 3997e6ad46Vishal Kulkarni struct struct_mem_desc avail[4]; 4007e6ad46Vishal Kulkarni struct struct_mem_desc mem[ARRAY_SIZE(region) + 3]; 4017e6ad46Vishal Kulkarni u32 avail_c; 4027e6ad46Vishal Kulkarni u32 mem_c; 4037e6ad46Vishal Kulkarni u32 up_ram_lo; 4047e6ad46Vishal Kulkarni u32 up_ram_hi; 4057e6ad46Vishal Kulkarni u32 up_extmem2_lo; 4067e6ad46Vishal Kulkarni u32 up_extmem2_hi; 4077e6ad46Vishal Kulkarni u32 rx_pages_data[3]; 4087e6ad46Vishal Kulkarni u32 tx_pages_data[4]; 4097e6ad46Vishal Kulkarni u32 p_structs; 4107e6ad46Vishal Kulkarni struct struct_port_usage port_data[4]; 4117e6ad46Vishal Kulkarni u32 port_used[4]; 4127e6ad46Vishal Kulkarni u32 port_alloc[4]; 4137e6ad46Vishal Kulkarni u32 loopback_used[NCHAN]; 4147e6ad46Vishal Kulkarni u32 loopback_alloc[NCHAN]; 4157e6ad46Vishal Kulkarni u32 pstructs_free_cnt; 4167e6ad46Vishal Kulkarni u32 free_rx_cnt; 4177e6ad46Vishal Kulkarni u32 free_tx_cnt; 4187e6ad46Vishal Kulkarni}; 4197e6ad46Vishal Kulkarni 4207e6ad46Vishal Kulkarni#ifndef __GNUC__ 4217e6ad46Vishal Kulkarni#pragma warning(disable : 4200) 4227e6ad46Vishal Kulkarni#endif 4237e6ad46Vishal Kulkarni 4247e6ad46Vishal Kulkarnistruct struct_lb_stats { 4257e6ad46Vishal Kulkarni int nchan; 4267e6ad46Vishal Kulkarni struct lb_port_stats s[0]; 4277e6ad46Vishal Kulkarni}; 4287e6ad46Vishal Kulkarni 4297e6ad46Vishal Kulkarnistruct struct_clk_info { 4307e6ad46Vishal Kulkarni u64 retransmit_min; 4317e6ad46Vishal Kulkarni u64 retransmit_max; 4327e6ad46Vishal Kulkarni u64 persist_timer_min; 4337e6ad46Vishal Kulkarni u64 persist_timer_max; 4347e6ad46Vishal Kulkarni u64 keepalive_idle_timer; 4357e6ad46Vishal Kulkarni u64 keepalive_interval; 4367e6ad46Vishal Kulkarni u64 initial_srtt; 4377e6ad46Vishal Kulkarni u64 finwait2_timer; 4387e6ad46Vishal Kulkarni u32 dack_timer; 4397e6ad46Vishal Kulkarni u32 res; 4407e6ad46Vishal Kulkarni u32 cclk_ps; 4417e6ad46Vishal Kulkarni u32 tre; 4427e6ad46Vishal Kulkarni u32 dack_re; 4437e6ad46Vishal Kulkarni char core_clk_period[32]; 4447e6ad46Vishal Kulkarni char tp_timer_tick[32]; 4457e6ad46Vishal Kulkarni char tcp_tstamp_tick[32]; 4467e6ad46Vishal Kulkarni char dack_tick[32]; 4477e6ad46Vishal Kulkarni}; 4487e6ad46Vishal Kulkarni 4497e6ad46Vishal Kulkarnistruct cim_pif_la { 4507e6ad46Vishal Kulkarni int size; 4517e6ad46Vishal Kulkarni u8 data[0]; 4527e6ad46Vishal Kulkarni}; 4537e6ad46Vishal Kulkarni 4547e6ad46Vishal Kulkarnistruct struct_tp_la { 4557e6ad46Vishal Kulkarni u32 size; 4567e6ad46Vishal Kulkarni u32 mode; 4577e6ad46Vishal Kulkarni u8 data[0]; 4587e6ad46Vishal Kulkarni}; 4597e6ad46Vishal Kulkarni 4607e6ad46Vishal Kulkarnistruct field_desc { 4617e6ad46Vishal Kulkarni const char *name; 4627e6ad46Vishal Kulkarni u32 start; 4637e6ad46Vishal Kulkarni u32 width; 4647e6ad46Vishal Kulkarni}; 4657e6ad46Vishal Kulkarni 4667e6ad46Vishal Kulkarnistruct tp_mib_type { 4677e6ad46Vishal Kulkarni char *key; 4687e6ad46Vishal Kulkarni u32 addr; 4697e6ad46Vishal Kulkarni u32 value; 4707e6ad46Vishal Kulkarni}; 4717e6ad46Vishal Kulkarni 4727e6ad46Vishal Kulkarnistruct wtp_type_0 { 4737e6ad46Vishal Kulkarni u32 sop; 4747e6ad46Vishal Kulkarni u32 eop; 4757e6ad46Vishal Kulkarni}; 4767e6ad46Vishal Kulkarni 4777e6ad46Vishal Kulkarnistruct wtp_type_1 { 4787e6ad46Vishal Kulkarni u32 sop[2]; 4797e6ad46Vishal Kulkarni u32 eop[2]; 4807e6ad46Vishal Kulkarni}; 4817e6ad46Vishal Kulkarni 4827e6ad46Vishal Kulkarnistruct wtp_type_2 { 4837e6ad46Vishal Kulkarni u32 sop[4]; 4847e6ad46Vishal Kulkarni u32 eop[4]; 4857e6ad46Vishal Kulkarni}; 4867e6ad46Vishal Kulkarni 4877e6ad46Vishal Kulkarnistruct wtp_type_3 { 4887e6ad46Vishal Kulkarni u32 sop[4]; 4897e6ad46Vishal Kulkarni u32 eop[4]; 4907e6ad46Vishal Kulkarni u32 drops; 4917e6ad46Vishal Kulkarni}; 4927e6ad46Vishal Kulkarni 4937e6ad46Vishal Kulkarnistruct wtp_data { 4947e6ad46Vishal Kulkarni /*TX path, Request Work request sub-path:*/ 4957e6ad46Vishal Kulkarni 4967e6ad46Vishal Kulkarni struct wtp_type_1 sge_pcie_cmd_req; /*SGE_DEBUG PC_Req_xOPn*/ 4977e6ad46Vishal Kulkarni struct wtp_type_1 pcie_core_cmd_req; /*PCIE_CMDR_REQ_CNT*/ 4987e6ad46Vishal Kulkarni 4997e6ad46Vishal Kulkarni 5007e6ad46Vishal Kulkarni /*TX path, Work request to uP sub-path*/ 5017e6ad46Vishal Kulkarni struct wtp_type_1 core_pcie_cmd_rsp; /*PCIE_CMDR_RSP_CNT*/ 5027e6ad46Vishal Kulkarni struct wtp_type_1 pcie_sge_cmd_rsp; /*SGE_DEBUG PC_Rsp_xOPn*/ 5037e6ad46Vishal Kulkarni struct wtp_type_1 sge_cim; /*SGE_DEBUG CIM_xOPn*/ 5047e6ad46Vishal Kulkarni 5057e6ad46Vishal Kulkarni /*TX path, Data request path from ULP_TX to core*/ 5067e6ad46Vishal Kulkarni struct wtp_type_2 utx_sge_dma_req; /*SGE UD_Rx_xOPn*/ 5077e6ad46Vishal Kulkarni struct wtp_type_2 sge_pcie_dma_req; /*SGE PD_Req_Rdn (no eops)*/ 5087e6ad46Vishal Kulkarni struct wtp_type_2 pcie_core_dma_req; /*PCIE_DMAR_REQ_CNT (no eops)*/ 5097e6ad46Vishal Kulkarni 5107e6ad46Vishal Kulkarni /*Main TX path, from core to wire*/ 5117e6ad46Vishal Kulkarni struct wtp_type_2 core_pcie_dma_rsp; /*PCIE_DMAR_RSP_SOP_CNT/ 5127e6ad46Vishal Kulkarni PCIE_DMAR_EOP_CNT*/ 5137e6ad46Vishal Kulkarni struct wtp_type_2 pcie_sge_dma_rsp; /*SGE_DEBUG PD_Rsp_xOPn*/ 5147e6ad46Vishal Kulkarni struct wtp_type_2 sge_utx; /*SGE_DEBUG U_Tx_xOPn*/ 5157e6ad46Vishal Kulkarni struct wtp_type_2 utx_tp; /*ULP_TX_SE_CNT_CHn[xOP_CNT_ULP2TP]*/ 5167e6ad46Vishal Kulkarni struct wtp_type_2 utx_tpcside; /*TP_DBG_CSIDE_RXn[RxXoPCnt]*/ 5177e6ad46Vishal Kulkarni 5187e6ad46Vishal Kulkarni struct wtp_type_2 tpcside_rxpld; 5197e6ad46Vishal Kulkarni struct wtp_type_2 tpcside_rxarb; /*TP_DBG_CSIDE_RXn[RxArbXopCnt]*/ 5207e6ad46Vishal Kulkarni struct wtp_type_2 tpcside_rxcpl; 5217e6ad46Vishal Kulkarni 5227e6ad46Vishal Kulkarni struct wtp_type_2 tpeside_mps; /*TP_DBG_ESDIE_PKT0[TxXoPCnt]*/ 5237e6ad46Vishal Kulkarni struct wtp_type_2 tpeside_pm; 5247e6ad46Vishal Kulkarni struct wtp_type_2 tpeside_pld; 5257e6ad46Vishal Kulkarni 5267e6ad46Vishal Kulkarni /*Tx path, PCIE t5 DMA stat*/ 5277e6ad46Vishal Kulkarni struct wtp_type_2 pcie_t5_dma_stat3; 5287e6ad46Vishal Kulkarni 5297e6ad46Vishal Kulkarni /*Tx path, SGE debug data high index 6*/ 5307e6ad46Vishal Kulkarni struct wtp_type_2 sge_debug_data_high_index_6; 5317e6ad46Vishal Kulkarni 5327e6ad46Vishal Kulkarni /*Tx path, SGE debug data high index 3*/ 5337e6ad46Vishal Kulkarni struct wtp_type_2 sge_debug_data_high_index_3; 5347e6ad46Vishal Kulkarni 5357e6ad46Vishal Kulkarni /*Tx path, ULP SE CNT CHx*/ 5367e6ad46Vishal Kulkarni struct wtp_type_2 ulp_se_cnt_chx; 5377e6ad46Vishal Kulkarni 5387e6ad46Vishal Kulkarni /*pcie cmd stat 2*/ 5397e6ad46Vishal Kulkarni struct wtp_type_2 pcie_cmd_stat2; 5407e6ad46Vishal Kulkarni 5417e6ad46Vishal Kulkarni /*pcie cmd stat 3*/ 5427e6ad46Vishal Kulkarni struct wtp_type_2 pcie_cmd_stat3; 5437e6ad46Vishal Kulkarni 5447e6ad46Vishal Kulkarni struct wtp_type_2 pcie_dma1_stat2_core; 5457e6ad46Vishal Kulkarni 5467e6ad46Vishal Kulkarni struct wtp_type_1 sge_work_req_pkt; 5477e6ad46Vishal Kulkarni 5487e6ad46Vishal Kulkarni struct wtp_type_2 sge_debug_data_high_indx5; 5497e6ad46Vishal Kulkarni 5507e6ad46Vishal Kulkarni /*Tx path, mac portx pkt count*/ 5517e6ad46Vishal Kulkarni struct wtp_type_2 mac_portx_pkt_count; 5527e6ad46Vishal Kulkarni 5537e6ad46Vishal Kulkarni /*Rx path, mac porrx pkt count*/ 5547e6ad46Vishal Kulkarni struct wtp_type_2 mac_porrx_pkt_count; 5557e6ad46Vishal Kulkarni 5567e6ad46Vishal Kulkarni /*Rx path, PCIE T5 dma1 stat 2*/ 5577e6ad46Vishal Kulkarni struct wtp_type_2 pcie_dma1_stat2; 5587e6ad46Vishal Kulkarni 5597e6ad46Vishal Kulkarni /*Rx path, sge debug data high index 7*/ 5607e6ad46Vishal Kulkarni struct wtp_type_2 sge_debug_data_high_indx7; 5617e6ad46Vishal Kulkarni 5627e6ad46Vishal Kulkarni /*Rx path, sge debug data high index 1*/ 5637e6ad46Vishal Kulkarni struct wtp_type_1 sge_debug_data_high_indx1; 5647e6ad46Vishal Kulkarni 5657e6ad46Vishal Kulkarni /*Rx path, TP debug CSIDE Tx register*/ 5667e6ad46Vishal Kulkarni struct wtp_type_1 utx_tpcside_tx; 5677e6ad46Vishal Kulkarni 5687e6ad46Vishal Kulkarni /*Rx path, LE DB response count*/ 5697e6ad46Vishal Kulkarni struct wtp_type_0 le_db_rsp_cnt; 5707e6ad46Vishal Kulkarni 5717e6ad46Vishal Kulkarni /*Rx path, TP debug Eside PKTx*/ 5727e6ad46Vishal Kulkarni struct wtp_type_2 tp_dbg_eside_pktx; 5737e6ad46Vishal Kulkarni 5747e6ad46Vishal Kulkarni /*Rx path, sge debug data high index 9*/ 5757e6ad46Vishal Kulkarni struct wtp_type_1 sge_debug_data_high_indx9; 5767e6ad46Vishal Kulkarni 5777e6ad46Vishal Kulkarni /*Tx path, mac portx aFramesTransmittesok*/ 5787e6ad46Vishal Kulkarni struct wtp_type_2 mac_portx_aframestra_ok; 5797e6ad46Vishal Kulkarni 5807e6ad46Vishal Kulkarni /*Rx path, mac portx aFramesTransmittesok*/ 5817e6ad46Vishal Kulkarni struct wtp_type_2 mac_porrx_aframestra_ok; 5827e6ad46Vishal Kulkarni 5837e6ad46Vishal Kulkarni /*Tx path, MAC_PORT_MTIP_1G10G_RX_etherStatsPkts*/ 5847e6ad46Vishal Kulkarni struct wtp_type_1 mac_portx_etherstatspkts; 5857e6ad46Vishal Kulkarni 5867e6ad46Vishal Kulkarni /*Rx path, MAC_PORT_MTIP_1G10G_RX_etherStatsPkts*/ 5877e6ad46Vishal Kulkarni struct wtp_type_1 mac_porrx_etherstatspkts; 5887e6ad46Vishal Kulkarni 5897e6ad46Vishal Kulkarni struct wtp_type_3 tp_mps; /*MPS_TX_SE_CNT_TP01 and 5907e6ad46Vishal Kulkarni MPS_TX_SE_CNT_TP34*/ 5917e6ad46Vishal Kulkarni struct wtp_type_3 mps_xgm; /*MPS_TX_SE_CNT_MAC01 and 5927e6ad46Vishal Kulkarni MPS_TX_SE_CNT_MAC34*/ 5937e6ad46Vishal Kulkarni struct wtp_type_2 tx_xgm_xgm; /*XGMAC_PORT_PKT_CNT_PORT_n*/ 5947e6ad46Vishal Kulkarni struct wtp_type_2 xgm_wire; /*XGMAC_PORT_XGM_STAT_TX_FRAME_LOW_PORT_N 5957e6ad46Vishal Kulkarni (clear on read)*/ 5967e6ad46Vishal Kulkarni 5977e6ad46Vishal Kulkarni /*RX path, from wire to core.*/ 5987e6ad46Vishal Kulkarni struct wtp_type_2 wire_xgm; /*XGMAC_PORT_XGM_STAT_RX_FRAMES_LOW_PORT_N 5997e6ad46Vishal Kulkarni (clear on read)*/ 6007e6ad46Vishal Kulkarni struct wtp_type_2 rx_xgm_xgm; /*XGMAC_PORT_PKT_CNT_PORT_n*/ 6017e6ad46Vishal Kulkarni struct _xgm_mps { /*MPS_RX_SE_CNT_INn*/ 6027e6ad46Vishal Kulkarni u32 sop[8]; /* => undef,*/ 6037e6ad46Vishal Kulkarni u32 eop[8]; /* => undef,*/ 6047e6ad46Vishal Kulkarni u32 drop; /* => undef,*/ 6057e6ad46Vishal Kulkarni u32 cls_drop; /* => undef,*/ 6067e6ad46Vishal Kulkarni u32 err; /* => undef,*/ 6077e6ad46Vishal Kulkarni u32 bp; /* => undef,*/ 6087e6ad46Vishal Kulkarni } xgm_mps; 6097e6ad46Vishal Kulkarni 6107e6ad46Vishal Kulkarni struct wtp_type_3 mps_tp; /*MPS_RX_SE_CNT_OUT01 and 6117e6ad46Vishal Kulkarni MPS_RX_SE_CNT_OUT23*/ 6127e6ad46Vishal Kulkarni struct wtp_type_2 mps_tpeside; /*TP_DBG_ESIDE_PKTn*/ 6137e6ad46Vishal Kulkarni struct wtp_type_1 tpeside_pmrx; /*???*/ 6147e6ad46Vishal Kulkarni struct wtp_type_2 pmrx_ulprx; /*ULP_RX_SE_CNT_CHn[xOP_CNT_INn]*/ 6157e6ad46Vishal Kulkarni struct wtp_type_2 ulprx_tpcside; /*ULP_RX_SE_CNT_CHn[xOP_CNT_OUTn]*/ 6167e6ad46Vishal Kulkarni struct wtp_type_2 tpcside_csw; /*TP_DBG_CSIDE_TXn[TxSopCnt]*/ 6177e6ad46Vishal Kulkarni struct wtp_type_2 tpcside_pm; 6187e6ad46Vishal Kulkarni struct wtp_type_2 tpcside_uturn; 6197e6ad46Vishal Kulkarni struct wtp_type_2 tpcside_txcpl; 6207e6ad46Vishal Kulkarni struct wtp_type_1 tp_csw; /*SGE_DEBUG CPLSW_TP_Rx_xOPn*/ 6217e6ad46Vishal Kulkarni struct wtp_type_1 csw_sge; /*SGE_DEBUG T_Rx_xOPn*/ 6227e6ad46Vishal Kulkarni struct wtp_type_2 sge_pcie; /*SGE_DEBUG PD_Req_SopN - 6237e6ad46Vishal Kulkarni PD_Req_RdN - PD_ReqIntN*/ 6247e6ad46Vishal Kulkarni struct wtp_type_2 sge_pcie_ints; /*SGE_DEBUG PD_Req_IntN*/ 6257e6ad46Vishal Kulkarni struct wtp_type_2 pcie_core_dmaw; /*PCIE_DMAW_SOP_CNT and 6267e6ad46Vishal Kulkarni PCIE_DMAW_EOP_CNT*/ 6277e6ad46Vishal Kulkarni struct wtp_type_2 pcie_core_dmai; /*PCIE_DMAI_CNT*/ 6287e6ad46Vishal Kulkarni 6297e6ad46Vishal Kulkarni}; 6307e6ad46Vishal Kulkarni 6317e6ad46Vishal Kulkarnistruct tp_mib_data { 6327e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_MAC_IN_ERR_0; 6337e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_MAC_IN_ERR_1; 6347e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_MAC_IN_ERR_2; 6357e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_MAC_IN_ERR_3; 6367e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_HDR_IN_ERR_0; 6377e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_HDR_IN_ERR_1; 6387e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_HDR_IN_ERR_2; 6397e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_HDR_IN_ERR_3; 6407e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_IN_ERR_0; 6417e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_IN_ERR_1; 6427e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_IN_ERR_2; 6437e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_IN_ERR_3; 6447e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_OUT_RST; 6457e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_IN_SEG_HI; 6467e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_IN_SEG_LO; 6477e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_OUT_SEG_HI; 6487e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_OUT_SEG_LO; 6497e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_RXT_SEG_HI; 6507e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_RXT_SEG_LO; 6517e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_CNG_DROP_0; 6527e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_CNG_DROP_1; 6537e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_CNG_DROP_2; 6547e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_CNG_DROP_3; 6557e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_OFD_CHN_DROP_0; 6567e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_OFD_CHN_DROP_1; 6577e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_OFD_CHN_DROP_2; 6587e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_OFD_CHN_DROP_3; 6597e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_OUT_PKT_0; 6607e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_OUT_PKT_1; 6617e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_OUT_PKT_2; 6627e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_OUT_PKT_3; 6637e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_IN_PKT_0; 6647e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_IN_PKT_1; 6657e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_IN_PKT_2; 6667e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_IN_PKT_3; 6677e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_V6IN_ERR_0; 6687e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_V6IN_ERR_1; 6697e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_V6IN_ERR_2; 6707e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_V6IN_ERR_3; 6717e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_V6OUT_RST; 6727e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_V6IN_SEG_HI; 6737e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_V6IN_SEG_LO; 6747e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_V6OUT_SEG_HI; 6757e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_V6OUT_SEG_LO; 6767e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_V6RXT_SEG_HI; 6777e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TCP_V6RXT_SEG_LO; 6787e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_OFD_ARP_DROP; 6797e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_OFD_DFR_DROP; 6807e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_CPL_IN_REQ_0; 6817e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_CPL_IN_REQ_1; 6827e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_CPL_IN_REQ_2; 6837e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_CPL_IN_REQ_3; 6847e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_CPL_OUT_RSP_0; 6857e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_CPL_OUT_RSP_1; 6867e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_CPL_OUT_RSP_2; 6877e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_CPL_OUT_RSP_3; 6887e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_LPBK_0; 6897e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_LPBK_1; 6907e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_LPBK_2; 6917e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_LPBK_3; 6927e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_DROP_0; 6937e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_DROP_1; 6947e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_DROP_2; 6957e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TNL_DROP_3; 6967e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_DDP_0; 6977e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_DDP_1; 6987e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_DDP_2; 6997e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_DDP_3; 7007e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_DROP_0; 7017e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_DROP_1; 7027e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_DROP_2; 7037e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_DROP_3; 7047e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_BYTE_0_HI; 7057e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_BYTE_0_LO; 7067e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_BYTE_1_HI; 7077e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_BYTE_1_LO; 7087e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_BYTE_2_HI; 7097e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_BYTE_2_LO; 7107e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_BYTE_3_HI; 7117e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_FCOE_BYTE_3_LO; 7127e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_OFD_VLN_DROP_0; 7137e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_OFD_VLN_DROP_1; 7147e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_OFD_VLN_DROP_2; 7157e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_OFD_VLN_DROP_3; 7167e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_USM_PKTS; 7177e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_USM_DROP; 7187e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_USM_BYTES_HI; 7197e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_USM_BYTES_LO; 7207e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TID_DEL; 7217e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TID_INV; 7227e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TID_ACT; 7237e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_TID_PAS; 7247e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_RQE_DFR_MOD; 7257e6ad46Vishal Kulkarni struct tp_mib_type TP_MIB_RQE_DFR_PKT; 7267e6ad46Vishal Kulkarni}; 7277e6ad46Vishal Kulkarni 7287e6ad46Vishal Kulkarnistruct cudbg_reg_info { 7297e6ad46Vishal Kulkarni const char *name; 7307e6ad46Vishal Kulkarni unsigned int addr; 7317e6ad46Vishal Kulkarni unsigned int len; 7327e6ad46Vishal Kulkarni}; 7337e6ad46Vishal Kulkarni 7347e6ad46Vishal Kulkarnistruct tp1_reg_info { 7357e6ad46Vishal Kulkarni char addr[10]; 7367e6ad46Vishal Kulkarni char name[40]; 7377e6ad46Vishal Kulkarni}; 7387e6ad46Vishal Kulkarni 7397e6ad46Vishal Kulkarnistruct ireg_field { 7407e6ad46Vishal Kulkarni u32 ireg_addr; 7417e6ad46Vishal Kulkarni u32 ireg_data; 7427e6ad46Vishal Kulkarni u32 ireg_local_offset; 7437e6ad46Vishal Kulkarni u32 ireg_offset_range; 7447e6ad46Vishal Kulkarni}; 7457e6ad46Vishal Kulkarni 7467e6ad46Vishal Kulkarnistruct ireg_buf { 7477e6ad46Vishal Kulkarni struct ireg_field tp_pio; 7487e6ad46Vishal Kulkarni u32 outbuf[32]; 7497e6ad46Vishal Kulkarni}; 7507e6ad46Vishal Kulkarni 7517e6ad46Vishal Kulkarnistruct tx_rate { 7527e6ad46Vishal Kulkarni u64 nrate[NCHAN]; 7537e6ad46Vishal Kulkarni u64 orate[NCHAN]; 7547e6ad46Vishal Kulkarni u32 nchan; 7557e6ad46Vishal Kulkarni}; 7567e6ad46Vishal Kulkarni 7577e6ad46Vishal Kulkarnistruct tid_info_region { 7587e6ad46Vishal Kulkarni u32 ntids; 7597e6ad46Vishal Kulkarni u32 nstids; 7607e6ad46Vishal Kulkarni u32 stid_base; 7617e6ad46Vishal Kulkarni u32 hash_base; 7627e6ad46Vishal Kulkarni 7637e6ad46Vishal Kulkarni u32 natids; 7647e6ad46Vishal Kulkarni u32 nftids; 7657e6ad46Vishal Kulkarni u32 ftid_base; 7667e6ad46Vishal Kulkarni u32 aftid_base; 7677e6ad46Vishal Kulkarni u32 aftid_end; 7687e6ad46Vishal Kulkarni 7697e6ad46Vishal Kulkarni /* Server filter region */ 7707e6ad46Vishal Kulkarni u32 sftid_base; 7717e6ad46Vishal Kulkarni u32 nsftids; 7727e6ad46Vishal Kulkarni 7737e6ad46Vishal Kulkarni /* UO context range */ 7747e6ad46Vishal Kulkarni u32 uotid_base; 7757e6ad46Vishal Kulkarni u32 nuotids; 7767e6ad46Vishal Kulkarni 7777e6ad46Vishal Kulkarni u32 sb; 7787e6ad46Vishal Kulkarni u32 flags; 7797e6ad46Vishal Kulkarni u32 le_db_conf; 7807e6ad46Vishal Kulkarni u32 IP_users; 7817e6ad46Vishal Kulkarni u32 IPv6_users; 7827e6ad46Vishal Kulkarni 7837e6ad46Vishal Kulkarni u32 hpftid_base; 7847e6ad46Vishal Kulkarni u32 nhpftids; 7857e6ad46Vishal Kulkarni}; 7867e6ad46Vishal Kulkarni 7877e6ad46Vishal Kulkarnistruct tid_info_region_rev1 { 7887e6ad46Vishal Kulkarni struct cudbg_ver_hdr ver_hdr; 7897e6ad46Vishal Kulkarni struct tid_info_region tid; 7907e6ad46Vishal Kulkarni u32 tid_start; 7917e6ad46Vishal Kulkarni u32 reserved[16]; 7927e6ad46Vishal Kulkarni}; 7937e6ad46Vishal Kulkarni 7947e6ad46Vishal Kulkarnistruct struct_vpd_data { 7957e6ad46Vishal Kulkarni u8 sn[SN_MAX_LEN + 1]; 7967e6ad46Vishal Kulkarni u8 bn[BN_MAX_LEN + 1]; 7977e6ad46Vishal Kulkarni u8 na[NA_MAX_LEN + 1]; 7987e6ad46Vishal Kulkarni u8 mn[MN_MAX_LEN + 1]; 7997e6ad46Vishal Kulkarni u16 fw_major; 8007e6ad46Vishal Kulkarni u16 fw_minor; 8017e6ad46Vishal Kulkarni u16 fw_micro; 8027e6ad46Vishal Kulkarni u16 fw_build; 8037e6ad46Vishal Kulkarni u32 scfg_vers; 8047e6ad46Vishal Kulkarni u32 vpd_vers; 8057e6ad46Vishal Kulkarni}; 8067e6ad46Vishal Kulkarni 8077e6ad46Vishal Kulkarnistruct sw_state { 8087e6ad46Vishal Kulkarni u32 fw_state; 8097e6ad46Vishal Kulkarni u8 caller_string[100]; 8107e6ad46Vishal Kulkarni u8 os_type; 8117e6ad46Vishal Kulkarni u8 reserved[3]; 8127e6ad46Vishal Kulkarni u32 reserved1[16]; 8137e6ad46Vishal Kulkarni}; 8147e6ad46Vishal Kulkarni 8157e6ad46Vishal Kulkarnistruct sge_qbase_reg_field { 8167e6ad46Vishal Kulkarni u32 reg_addr; 8177e6ad46Vishal Kulkarni u32 reg_data[4]; 8187e6ad46Vishal Kulkarni u32 pf_data_value[8][4]; /* [max pf][4 data reg SGE_QBASE_MAP[0-3] */ 8197e6ad46Vishal Kulkarni u32 vf_data_value[256][4]; /* [max vf][4 data reg SGE_QBASE_MAP[0-3] */ 8207e6ad46Vishal Kulkarni u32 vfcount; 8217e6ad46Vishal Kulkarni}; 8227e6ad46Vishal Kulkarni 8237e6ad46Vishal Kulkarnistruct cudbg_qdesc_entry { 8247e6ad46Vishal Kulkarni u32 data_size; 8257e6ad46Vishal Kulkarni u32 qtype; 8267e6ad46Vishal Kulkarni u32 qid; 8277e6ad46Vishal Kulkarni u32 desc_size; 8287e6ad46Vishal Kulkarni u32 num_desc; 8297e6ad46Vishal Kulkarni u8 data[0]; /* Must be last */ 8307e6ad46Vishal Kulkarni}; 8317e6ad46Vishal Kulkarni 8327e6ad46Vishal Kulkarnistatic u32 ATTRIBUTE_UNUSED t6_tp_pio_array[][4] = { 8337e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x020, 28}, /* t6_tp_pio_regs_20_to_3b */ 8347e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x040, 10}, /* t6_tp_pio_regs_40_to_49 */ 8357e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x050, 10}, /* t6_tp_pio_regs_50_to_59 */ 8367e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x060, 14}, /* t6_tp_pio_regs_60_to_6d */ 8377e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x06F, 1}, /* t6_tp_pio_regs_6f */ 8387e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x070, 6}, /* t6_tp_pio_regs_70_to_75 */ 8397e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x130, 18}, /* t6_tp_pio_regs_130_to_141 */ 8407e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x145, 19}, /* t6_tp_pio_regs_145_to_157 */ 8417e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x160, 1}, /* t6_tp_pio_regs_160 */ 8427e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x230, 25}, /* t6_tp_pio_regs_230_to_248 */ 8437e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x24a, 3}, /* t6_tp_pio_regs_24c */ 8447e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x8C0, 1} /* t6_tp_pio_regs_8c0 */ 8457e6ad46Vishal Kulkarni}; 8467e6ad46Vishal Kulkarni 8477e6ad46Vishal Kulkarnistatic u32 ATTRIBUTE_UNUSED t5_tp_pio_array[][4] = { 8487e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x020, 28}, /* t5_tp_pio_regs_20_to_3b */ 8497e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x040, 19}, /* t5_tp_pio_regs_40_to_52 */ 8507e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x054, 2}, /* t5_tp_pio_regs_54_to_55 */ 8517e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x060, 13}, /* t5_tp_pio_regs_60_to_6c */ 8527e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x06F, 1}, /* t5_tp_pio_regs_6f */ 8537e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x120, 4}, /* t5_tp_pio_regs_120_to_123 */ 8547e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x12b, 2}, /* t5_tp_pio_regs_12b_to_12c */ 8557e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x12f, 21}, /* t5_tp_pio_regs_12f_to_143 */ 8567e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x145, 19}, /* t5_tp_pio_regs_145_to_157 */ 8577e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x230, 25}, /* t5_tp_pio_regs_230_to_248 */ 8587e6ad46Vishal Kulkarni {0x7e40, 0x7e44, 0x8C0, 1} /* t5_tp_pio_regs_8c0 */ 8597e6ad46Vishal Kulkarni}; 8607e6ad46Vishal Kulkarni 8617e6ad46Vishal Kulkarnistatic u32 ATTRIBUTE_UNUSED t6_ma_ireg_array[][4] = { 8627e6ad46Vishal Kulkarni {0x78f8, 0x78fc, 0xa000, 23}, /* t6_ma_regs_a000_to_a016 */ 8637e6ad46Vishal Kulkarni {0x78f8, 0x78fc, 0xa400, 30}, /* t6_ma_regs_a400_to_a41e */ 8647e6ad46Vishal Kulkarni {0x78f8, 0x78fc, 0xa800, 20} /* t6_ma_regs_a800_to_a813 */ 8657e6ad46Vishal Kulkarni}; 8667e6ad46Vishal Kulkarni 8677e6ad46Vishal Kulkarnistatic u32 ATTRIBUTE_UNUSED t6_ma_ireg_array2[][4] = { 8687e6ad46Vishal Kulkarni {0x78f8, 0x78fc, 0xe400, 17}, /* t6_ma_regs_e400_to_e600 */ 8697e6ad46Vishal Kulkarni {0x78f8, 0x78fc, 0xe640, 13} /* t6_ma_regs_e640_to_e7c0 */ 8707e6ad46Vishal Kulkarni}; 8717e6ad46Vishal Kulkarni 8727e6ad46Vishal Kulkarnistatic u32 ATTRIBUTE_UNUSED t6_hma_ireg_array[][4] = { 8737e6ad46Vishal Kulkarni {0x51320, 0x51324, 0xa000, 32} /* t6_hma_regs_a000_to_a01f */ 8747e6ad46Vishal Kulkarni}; 8757e6ad46Vishal Kulkarnistatic u32 ATTRIBUTE_UNUSED t5_pcie_pdbg_array[][4] = { 8767e6ad46Vishal Kulkarni {0x5a04, 0x5a0c, 0x00, 0x20}, /* t5_pcie_pdbg_regs_00_to_20 */ 8777e6ad46Vishal Kulkarni {0x5a04, 0x5a0c, 0x21, 0x20}, /* t5_pcie_pdbg_regs_21_to_40 */ 8787e6ad46Vishal Kulkarni {0x5a04, 0x5a0c, 0x41, 0x10}, /* t5_pcie_pdbg_regs_41_to_50 */ 8797e6ad46Vishal Kulkarni}; 8807e6ad46Vishal Kulkarni 8817e6ad46Vishal Kulkarnistatic u32 ATTRIBUTE_UNUSED t5_pcie_config_array[][2] = { 8827e6ad46Vishal Kulkarni {0x0, 0x34}, 8837e6ad46Vishal Kulkarni {0x3c, 0x40}, 8847e6ad46Vishal Kulkarni {0x50, 0x64}, 8857e6ad46Vishal Kulkarni {0x70, 0x80}, 886