0001
0002
0003
0004
0005
0006 #ifndef __CUDBG_ENTITY_H__
0007 #define __CUDBG_ENTITY_H__
0008
0009 #define EDC0_FLAG 0
0010 #define EDC1_FLAG 1
0011 #define MC_FLAG 2
0012 #define MC0_FLAG 3
0013 #define MC1_FLAG 4
0014 #define HMA_FLAG 5
0015
0016 #define CUDBG_ENTITY_SIGNATURE 0xCCEDB001
0017
0018 struct cudbg_mbox_log {
0019 struct mbox_cmd entry;
0020 u32 hi[MBOX_LEN / 8];
0021 u32 lo[MBOX_LEN / 8];
0022 };
0023
0024 struct cudbg_cim_qcfg {
0025 u8 chip;
0026 u16 base[CIM_NUM_IBQ + CIM_NUM_OBQ_T5];
0027 u16 size[CIM_NUM_IBQ + CIM_NUM_OBQ_T5];
0028 u16 thres[CIM_NUM_IBQ];
0029 u32 obq_wr[2 * CIM_NUM_OBQ_T5];
0030 u32 stat[4 * (CIM_NUM_IBQ + CIM_NUM_OBQ_T5)];
0031 };
0032
0033 struct cudbg_rss_vf_conf {
0034 u32 rss_vf_vfl;
0035 u32 rss_vf_vfh;
0036 };
0037
0038 struct cudbg_pm_stats {
0039 u32 tx_cnt[T6_PM_NSTATS];
0040 u32 rx_cnt[T6_PM_NSTATS];
0041 u64 tx_cyc[T6_PM_NSTATS];
0042 u64 rx_cyc[T6_PM_NSTATS];
0043 };
0044
0045 struct cudbg_hw_sched {
0046 u32 kbps[NTX_SCHED];
0047 u32 ipg[NTX_SCHED];
0048 u32 pace_tab[NTX_SCHED];
0049 u32 mode;
0050 u32 map;
0051 };
0052
0053 #define SGE_QBASE_DATA_REG_NUM 4
0054
0055 struct sge_qbase_reg_field {
0056 u32 reg_addr;
0057 u32 reg_data[SGE_QBASE_DATA_REG_NUM];
0058
0059 u32 pf_data_value[PCIE_FW_MASTER_M + 1][SGE_QBASE_DATA_REG_NUM];
0060
0061 u32 vf_data_value[T6_VF_M + 1][SGE_QBASE_DATA_REG_NUM];
0062 u32 vfcount;
0063 };
0064
0065 struct ireg_field {
0066 u32 ireg_addr;
0067 u32 ireg_data;
0068 u32 ireg_local_offset;
0069 u32 ireg_offset_range;
0070 };
0071
0072 struct ireg_buf {
0073 struct ireg_field tp_pio;
0074 u32 outbuf[32];
0075 };
0076
0077 struct cudbg_ulprx_la {
0078 u32 data[ULPRX_LA_SIZE * 8];
0079 u32 size;
0080 };
0081
0082 struct cudbg_tp_la {
0083 u32 size;
0084 u32 mode;
0085 u8 data[];
0086 };
0087
0088 static const char * const cudbg_region[] = {
0089 "DBQ contexts:", "IMSG contexts:", "FLM cache:", "TCBs:",
0090 "Pstructs:", "Timers:", "Rx FL:", "Tx FL:", "Pstruct FL:",
0091 "Tx payload:", "Rx payload:", "LE hash:", "iSCSI region:",
0092 "TDDP region:", "TPT region:", "STAG region:", "RQ region:",
0093 "RQUDP region:", "PBL region:", "TXPBL region:",
0094 "DBVFIFO region:", "ULPRX state:", "ULPTX state:",
0095 "On-chip queues:"
0096 };
0097
0098
0099 struct cudbg_region_info {
0100 bool exist;
0101 u32 start;
0102 u32 end;
0103 };
0104
0105 struct cudbg_mem_desc {
0106 u32 base;
0107 u32 limit;
0108 u32 idx;
0109 };
0110
0111 #define CUDBG_MEMINFO_REV 1
0112
0113 struct cudbg_meminfo {
0114 struct cudbg_mem_desc avail[4];
0115 struct cudbg_mem_desc mem[ARRAY_SIZE(cudbg_region) + 3];
0116 u32 avail_c;
0117 u32 mem_c;
0118 u32 up_ram_lo;
0119 u32 up_ram_hi;
0120 u32 up_extmem2_lo;
0121 u32 up_extmem2_hi;
0122 u32 rx_pages_data[3];
0123 u32 tx_pages_data[4];
0124 u32 p_structs;
0125 u32 reserved[12];
0126 u32 port_used[4];
0127 u32 port_alloc[4];
0128 u32 loopback_used[NCHAN];
0129 u32 loopback_alloc[NCHAN];
0130 u32 p_structs_free_cnt;
0131 u32 free_rx_cnt;
0132 u32 free_tx_cnt;
0133 };
0134
0135 struct cudbg_cim_pif_la {
0136 int size;
0137 u8 data[];
0138 };
0139
0140 struct cudbg_clk_info {
0141 u64 retransmit_min;
0142 u64 retransmit_max;
0143 u64 persist_timer_min;
0144 u64 persist_timer_max;
0145 u64 keepalive_idle_timer;
0146 u64 keepalive_interval;
0147 u64 initial_srtt;
0148 u64 finwait2_timer;
0149 u32 dack_timer;
0150 u32 res;
0151 u32 cclk_ps;
0152 u32 tre;
0153 u32 dack_re;
0154 };
0155
0156 struct cudbg_tid_info_region {
0157 u32 ntids;
0158 u32 nstids;
0159 u32 stid_base;
0160 u32 hash_base;
0161
0162 u32 natids;
0163 u32 nftids;
0164 u32 ftid_base;
0165 u32 aftid_base;
0166 u32 aftid_end;
0167
0168 u32 sftid_base;
0169 u32 nsftids;
0170
0171 u32 uotid_base;
0172 u32 nuotids;
0173
0174 u32 sb;
0175 u32 flags;
0176 u32 le_db_conf;
0177 u32 ip_users;
0178 u32 ipv6_users;
0179
0180 u32 hpftid_base;
0181 u32 nhpftids;
0182 };
0183
0184 #define CUDBG_TID_INFO_REV 1
0185
0186 struct cudbg_tid_info_region_rev1 {
0187 struct cudbg_ver_hdr ver_hdr;
0188 struct cudbg_tid_info_region tid;
0189 u32 tid_start;
0190 u32 reserved[16];
0191 };
0192
0193 #define CUDBG_LOWMEM_MAX_CTXT_QIDS 256
0194 #define CUDBG_MAX_FL_QIDS 1024
0195
0196 struct cudbg_ch_cntxt {
0197 u32 cntxt_type;
0198 u32 cntxt_id;
0199 u32 data[SGE_CTXT_SIZE / 4];
0200 };
0201
0202 #define CUDBG_MAX_RPLC_SIZE 128
0203
0204 struct cudbg_mps_tcam {
0205 u64 mask;
0206 u32 rplc[8];
0207 u32 idx;
0208 u32 cls_lo;
0209 u32 cls_hi;
0210 u32 rplc_size;
0211 u32 vniy;
0212 u32 vnix;
0213 u32 dip_hit;
0214 u32 vlan_vld;
0215 u32 repli;
0216 u16 ivlan;
0217 u8 addr[ETH_ALEN];
0218 u8 lookup_type;
0219 u8 port_num;
0220 u8 reserved[2];
0221 };
0222
0223 #define CUDBG_VPD_VER_ADDR 0x18c7
0224 #define CUDBG_VPD_VER_LEN 2
0225
0226 struct cudbg_vpd_data {
0227 u8 sn[SERNUM_LEN + 1];
0228 u8 bn[PN_LEN + 1];
0229 u8 na[MACADDR_LEN + 1];
0230 u8 mn[ID_LEN + 1];
0231 u16 fw_major;
0232 u16 fw_minor;
0233 u16 fw_micro;
0234 u16 fw_build;
0235 u32 scfg_vers;
0236 u32 vpd_vers;
0237 };
0238
0239 #define CUDBG_MAX_TCAM_TID 0x800
0240 #define CUDBG_T6_CLIP 1536
0241 #define CUDBG_MAX_TID_COMP_EN 6144
0242 #define CUDBG_MAX_TID_COMP_DIS 3072
0243
0244 enum cudbg_le_entry_types {
0245 LE_ET_UNKNOWN = 0,
0246 LE_ET_TCAM_CON = 1,
0247 LE_ET_TCAM_SERVER = 2,
0248 LE_ET_TCAM_FILTER = 3,
0249 LE_ET_TCAM_CLIP = 4,
0250 LE_ET_TCAM_ROUTING = 5,
0251 LE_ET_HASH_CON = 6,
0252 LE_ET_INVALID_TID = 8,
0253 };
0254
0255 struct cudbg_tcam {
0256 u32 filter_start;
0257 u32 server_start;
0258 u32 clip_start;
0259 u32 routing_start;
0260 u32 tid_hash_base;
0261 u32 max_tid;
0262 };
0263
0264 struct cudbg_tid_data {
0265 u32 tid;
0266 u32 dbig_cmd;
0267 u32 dbig_conf;
0268 u32 dbig_rsp_stat;
0269 u32 data[NUM_LE_DB_DBGI_RSP_DATA_INSTANCES];
0270 };
0271
0272 #define CUDBG_NUM_ULPTX 11
0273 #define CUDBG_NUM_ULPTX_READ 512
0274 #define CUDBG_NUM_ULPTX_ASIC 6
0275 #define CUDBG_NUM_ULPTX_ASIC_READ 128
0276
0277 #define CUDBG_ULPTX_LA_REV 1
0278
0279 struct cudbg_ulptx_la {
0280 u32 rdptr[CUDBG_NUM_ULPTX];
0281 u32 wrptr[CUDBG_NUM_ULPTX];
0282 u32 rddata[CUDBG_NUM_ULPTX];
0283 u32 rd_data[CUDBG_NUM_ULPTX][CUDBG_NUM_ULPTX_READ];
0284 u32 rdptr_asic[CUDBG_NUM_ULPTX_ASIC_READ];
0285 u32 rddata_asic[CUDBG_NUM_ULPTX_ASIC_READ][CUDBG_NUM_ULPTX_ASIC];
0286 };
0287
0288 #define CUDBG_CHAC_PBT_ADDR 0x2800
0289 #define CUDBG_CHAC_PBT_LRF 0x3000
0290 #define CUDBG_CHAC_PBT_DATA 0x3800
0291 #define CUDBG_PBT_DYNAMIC_ENTRIES 8
0292 #define CUDBG_PBT_STATIC_ENTRIES 16
0293 #define CUDBG_LRF_ENTRIES 8
0294 #define CUDBG_PBT_DATA_ENTRIES 512
0295
0296 struct cudbg_pbt_tables {
0297 u32 pbt_dynamic[CUDBG_PBT_DYNAMIC_ENTRIES];
0298 u32 pbt_static[CUDBG_PBT_STATIC_ENTRIES];
0299 u32 lrf_table[CUDBG_LRF_ENTRIES];
0300 u32 pbt_data[CUDBG_PBT_DATA_ENTRIES];
0301 };
0302
0303 enum cudbg_qdesc_qtype {
0304 CUDBG_QTYPE_UNKNOWN = 0,
0305 CUDBG_QTYPE_NIC_TXQ,
0306 CUDBG_QTYPE_NIC_RXQ,
0307 CUDBG_QTYPE_NIC_FLQ,
0308 CUDBG_QTYPE_CTRLQ,
0309 CUDBG_QTYPE_FWEVTQ,
0310 CUDBG_QTYPE_INTRQ,
0311 CUDBG_QTYPE_PTP_TXQ,
0312 CUDBG_QTYPE_OFLD_TXQ,
0313 CUDBG_QTYPE_RDMA_RXQ,
0314 CUDBG_QTYPE_RDMA_FLQ,
0315 CUDBG_QTYPE_RDMA_CIQ,
0316 CUDBG_QTYPE_ISCSI_RXQ,
0317 CUDBG_QTYPE_ISCSI_FLQ,
0318 CUDBG_QTYPE_ISCSIT_RXQ,
0319 CUDBG_QTYPE_ISCSIT_FLQ,
0320 CUDBG_QTYPE_CRYPTO_TXQ,
0321 CUDBG_QTYPE_CRYPTO_RXQ,
0322 CUDBG_QTYPE_CRYPTO_FLQ,
0323 CUDBG_QTYPE_TLS_RXQ,
0324 CUDBG_QTYPE_TLS_FLQ,
0325 CUDBG_QTYPE_ETHOFLD_TXQ,
0326 CUDBG_QTYPE_ETHOFLD_RXQ,
0327 CUDBG_QTYPE_ETHOFLD_FLQ,
0328 CUDBG_QTYPE_MAX,
0329 };
0330
0331 #define CUDBG_QDESC_REV 1
0332
0333 struct cudbg_qdesc_entry {
0334 u32 data_size;
0335 u32 qtype;
0336 u32 qid;
0337 u32 desc_size;
0338 u32 num_desc;
0339 u8 data[];
0340 };
0341
0342 struct cudbg_qdesc_info {
0343 u32 qdesc_entry_size;
0344 u32 num_queues;
0345 u8 data[];
0346 };
0347
0348 #define IREG_NUM_ELEM 4
0349
0350 #define CUDBG_NUM_PCIE_CONFIG_REGS 0x61
0351
0352 #endif