1*f856f099SNavdeep Parhar /*- 2*f856f099SNavdeep Parhar * Copyright (c) 2017 Chelsio Communications, Inc. 3*f856f099SNavdeep Parhar * All rights reserved. 4*f856f099SNavdeep Parhar * 5*f856f099SNavdeep Parhar * Redistribution and use in source and binary forms, with or without 6*f856f099SNavdeep Parhar * modification, are permitted provided that the following conditions 7*f856f099SNavdeep Parhar * are met: 8*f856f099SNavdeep Parhar * 1. Redistributions of source code must retain the above copyright 9*f856f099SNavdeep Parhar * notice, this list of conditions and the following disclaimer. 10*f856f099SNavdeep Parhar * 2. Redistributions in binary form must reproduce the above copyright 11*f856f099SNavdeep Parhar * notice, this list of conditions and the following disclaimer in the 12*f856f099SNavdeep Parhar * documentation and/or other materials provided with the distribution. 13*f856f099SNavdeep Parhar * 14*f856f099SNavdeep Parhar * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15*f856f099SNavdeep Parhar * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16*f856f099SNavdeep Parhar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17*f856f099SNavdeep Parhar * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18*f856f099SNavdeep Parhar * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19*f856f099SNavdeep Parhar * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20*f856f099SNavdeep Parhar * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21*f856f099SNavdeep Parhar * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22*f856f099SNavdeep Parhar * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23*f856f099SNavdeep Parhar * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24*f856f099SNavdeep Parhar * SUCH DAMAGE. 25*f856f099SNavdeep Parhar * 26*f856f099SNavdeep Parhar */ 27*f856f099SNavdeep Parhar 28*f856f099SNavdeep Parhar #ifndef __CUDBG_LIB_H__ 29*f856f099SNavdeep Parhar #define __CUDBG_LIB_H__ 30*f856f099SNavdeep Parhar 31*f856f099SNavdeep Parhar #ifndef min_t 32*f856f099SNavdeep Parhar #define min_t(type, _a, _b) (((type)(_a) < (type)(_b)) ? (type)(_a) : (type)(_b)) 33*f856f099SNavdeep Parhar #endif 34*f856f099SNavdeep Parhar 35*f856f099SNavdeep Parhar static int collect_reg_dump(struct cudbg_init *, struct cudbg_buffer *, 36*f856f099SNavdeep Parhar struct cudbg_error *); 37*f856f099SNavdeep Parhar static int collect_fw_devlog(struct cudbg_init *, struct cudbg_buffer *, 38*f856f099SNavdeep Parhar struct cudbg_error *); 39*f856f099SNavdeep Parhar static int collect_cim_qcfg(struct cudbg_init *, struct cudbg_buffer *, 40*f856f099SNavdeep Parhar struct cudbg_error *); 41*f856f099SNavdeep Parhar static int collect_cim_la(struct cudbg_init *, struct cudbg_buffer *, 42*f856f099SNavdeep Parhar struct cudbg_error *); 43*f856f099SNavdeep Parhar static int collect_cim_ma_la(struct cudbg_init *, struct cudbg_buffer *, 44*f856f099SNavdeep Parhar struct cudbg_error *); 45*f856f099SNavdeep Parhar static int collect_cim_obq_ulp0(struct cudbg_init *, struct cudbg_buffer *, 46*f856f099SNavdeep Parhar struct cudbg_error *); 47*f856f099SNavdeep Parhar static int collect_cim_obq_ulp1(struct cudbg_init *, struct cudbg_buffer *, 48*f856f099SNavdeep Parhar struct cudbg_error *); 49*f856f099SNavdeep Parhar static int collect_cim_obq_ulp2(struct cudbg_init *, struct cudbg_buffer *, 50*f856f099SNavdeep Parhar struct cudbg_error *); 51*f856f099SNavdeep Parhar static int collect_cim_obq_ulp3(struct cudbg_init *, struct cudbg_buffer *, 52*f856f099SNavdeep Parhar struct cudbg_error *); 53*f856f099SNavdeep Parhar static int collect_cim_obq_sge(struct cudbg_init *, struct cudbg_buffer *, 54*f856f099SNavdeep Parhar struct cudbg_error *); 55*f856f099SNavdeep Parhar static int collect_cim_obq_ncsi(struct cudbg_init *, struct cudbg_buffer *, 56*f856f099SNavdeep Parhar struct cudbg_error *); 57*f856f099SNavdeep Parhar static int collect_cim_ibq_tp0(struct cudbg_init *, struct cudbg_buffer *, 58*f856f099SNavdeep Parhar struct cudbg_error *); 59*f856f099SNavdeep Parhar static int collect_cim_ibq_tp1(struct cudbg_init *, struct cudbg_buffer *, 60*f856f099SNavdeep Parhar struct cudbg_error *); 61*f856f099SNavdeep Parhar static int collect_cim_ibq_ulp(struct cudbg_init *, struct cudbg_buffer *, 62*f856f099SNavdeep Parhar struct cudbg_error *); 63*f856f099SNavdeep Parhar static int collect_cim_ibq_sge0(struct cudbg_init *, struct cudbg_buffer *, 64*f856f099SNavdeep Parhar struct cudbg_error *); 65*f856f099SNavdeep Parhar static int collect_cim_ibq_sge1(struct cudbg_init *, struct cudbg_buffer *, 66*f856f099SNavdeep Parhar struct cudbg_error *); 67*f856f099SNavdeep Parhar static int collect_cim_ibq_ncsi(struct cudbg_init *, struct cudbg_buffer *, 68*f856f099SNavdeep Parhar struct cudbg_error *); 69*f856f099SNavdeep Parhar static int collect_edc0_meminfo(struct cudbg_init *, struct cudbg_buffer *, 70*f856f099SNavdeep Parhar struct cudbg_error *); 71*f856f099SNavdeep Parhar static int collect_edc1_meminfo(struct cudbg_init *, struct cudbg_buffer *, 72*f856f099SNavdeep Parhar struct cudbg_error *); 73*f856f099SNavdeep Parhar static int collect_mc0_meminfo(struct cudbg_init *, struct cudbg_buffer *, 74*f856f099SNavdeep Parhar struct cudbg_error *); 75*f856f099SNavdeep Parhar static int collect_mc1_meminfo(struct cudbg_init *, struct cudbg_buffer *, 76*f856f099SNavdeep Parhar struct cudbg_error *); 77*f856f099SNavdeep Parhar static int collect_rss(struct cudbg_init *, struct cudbg_buffer *, 78*f856f099SNavdeep Parhar struct cudbg_error *); 79*f856f099SNavdeep Parhar static int collect_rss_key(struct cudbg_init *, struct cudbg_buffer *, 80*f856f099SNavdeep Parhar struct cudbg_error *); 81*f856f099SNavdeep Parhar static int collect_rss_pf_config(struct cudbg_init *, struct cudbg_buffer *, 82*f856f099SNavdeep Parhar struct cudbg_error *); 83*f856f099SNavdeep Parhar static int collect_rss_vf_config(struct cudbg_init *, struct cudbg_buffer *, 84*f856f099SNavdeep Parhar struct cudbg_error *); 85*f856f099SNavdeep Parhar static int collect_rss_config(struct cudbg_init *, struct cudbg_buffer *, 86*f856f099SNavdeep Parhar struct cudbg_error *); 87*f856f099SNavdeep Parhar static int collect_path_mtu(struct cudbg_init *, struct cudbg_buffer *, 88*f856f099SNavdeep Parhar struct cudbg_error *); 89*f856f099SNavdeep Parhar static int collect_sw_state(struct cudbg_init *, struct cudbg_buffer *, 90*f856f099SNavdeep Parhar struct cudbg_error *); 91*f856f099SNavdeep Parhar int collect_wtp_data(struct cudbg_init *, struct cudbg_buffer *, 92*f856f099SNavdeep Parhar struct cudbg_error *); 93*f856f099SNavdeep Parhar static int collect_pm_stats(struct cudbg_init *, struct cudbg_buffer *, 94*f856f099SNavdeep Parhar struct cudbg_error *); 95*f856f099SNavdeep Parhar static int collect_hw_sched(struct cudbg_init *, struct cudbg_buffer *, 96*f856f099SNavdeep Parhar struct cudbg_error *); 97*f856f099SNavdeep Parhar static int collect_tcp_stats(struct cudbg_init *, struct cudbg_buffer *, 98*f856f099SNavdeep Parhar struct cudbg_error *); 99*f856f099SNavdeep Parhar static int collect_tp_err_stats(struct cudbg_init *, struct cudbg_buffer *, 100*f856f099SNavdeep Parhar struct cudbg_error *); 101*f856f099SNavdeep Parhar static int collect_fcoe_stats(struct cudbg_init *, struct cudbg_buffer *, 102*f856f099SNavdeep Parhar struct cudbg_error *); 103*f856f099SNavdeep Parhar static int collect_rdma_stats(struct cudbg_init *, struct cudbg_buffer *, 104*f856f099SNavdeep Parhar struct cudbg_error *); 105*f856f099SNavdeep Parhar static int collect_tp_indirect(struct cudbg_init *, struct cudbg_buffer *, 106*f856f099SNavdeep Parhar struct cudbg_error *); 107*f856f099SNavdeep Parhar static int collect_sge_indirect(struct cudbg_init *, struct cudbg_buffer *, 108*f856f099SNavdeep Parhar struct cudbg_error *); 109*f856f099SNavdeep Parhar static int collect_cpl_stats(struct cudbg_init *, struct cudbg_buffer *, 110*f856f099SNavdeep Parhar struct cudbg_error *); 111*f856f099SNavdeep Parhar static int collect_ddp_stats(struct cudbg_init *, struct cudbg_buffer *, 112*f856f099SNavdeep Parhar struct cudbg_error *); 113*f856f099SNavdeep Parhar static int collect_wc_stats(struct cudbg_init *, struct cudbg_buffer *, 114*f856f099SNavdeep Parhar struct cudbg_error *); 115*f856f099SNavdeep Parhar static int collect_ulprx_la(struct cudbg_init *, struct cudbg_buffer *, 116*f856f099SNavdeep Parhar struct cudbg_error *); 117*f856f099SNavdeep Parhar static int collect_lb_stats(struct cudbg_init *, struct cudbg_buffer *, 118*f856f099SNavdeep Parhar struct cudbg_error *); 119*f856f099SNavdeep Parhar static int collect_tp_la(struct cudbg_init *, struct cudbg_buffer *, 120*f856f099SNavdeep Parhar struct cudbg_error *); 121*f856f099SNavdeep Parhar static int collect_meminfo(struct cudbg_init *, struct cudbg_buffer *, 122*f856f099SNavdeep Parhar struct cudbg_error *); 123*f856f099SNavdeep Parhar static int collect_cim_pif_la(struct cudbg_init *, struct cudbg_buffer *, 124*f856f099SNavdeep Parhar struct cudbg_error *); 125*f856f099SNavdeep Parhar static int collect_clk_info(struct cudbg_init *, struct cudbg_buffer *, 126*f856f099SNavdeep Parhar struct cudbg_error *); 127*f856f099SNavdeep Parhar static int collect_obq_sge_rx_q0(struct cudbg_init *, struct cudbg_buffer *, 128*f856f099SNavdeep Parhar struct cudbg_error *); 129*f856f099SNavdeep Parhar static int collect_obq_sge_rx_q1(struct cudbg_init *, struct cudbg_buffer *, 130*f856f099SNavdeep Parhar struct cudbg_error *); 131*f856f099SNavdeep Parhar static int collect_macstats(struct cudbg_init *, struct cudbg_buffer *, 132*f856f099SNavdeep Parhar struct cudbg_error *); 133*f856f099SNavdeep Parhar static int collect_pcie_indirect(struct cudbg_init *, struct cudbg_buffer *, 134*f856f099SNavdeep Parhar struct cudbg_error *); 135*f856f099SNavdeep Parhar static int collect_pm_indirect(struct cudbg_init *, struct cudbg_buffer *, 136*f856f099SNavdeep Parhar struct cudbg_error *); 137*f856f099SNavdeep Parhar static int collect_full(struct cudbg_init *, struct cudbg_buffer *, 138*f856f099SNavdeep Parhar struct cudbg_error *); 139*f856f099SNavdeep Parhar static int collect_tx_rate(struct cudbg_init *, struct cudbg_buffer *, 140*f856f099SNavdeep Parhar struct cudbg_error *); 141*f856f099SNavdeep Parhar static int collect_tid(struct cudbg_init *, struct cudbg_buffer *, 142*f856f099SNavdeep Parhar struct cudbg_error *); 143*f856f099SNavdeep Parhar static int collect_pcie_config(struct cudbg_init *, struct cudbg_buffer *, 144*f856f099SNavdeep Parhar struct cudbg_error *); 145*f856f099SNavdeep Parhar static int collect_dump_context(struct cudbg_init *, struct cudbg_buffer *, 146*f856f099SNavdeep Parhar struct cudbg_error *); 147*f856f099SNavdeep Parhar static int collect_mps_tcam(struct cudbg_init *, struct cudbg_buffer *, 148*f856f099SNavdeep Parhar struct cudbg_error *); 149*f856f099SNavdeep Parhar static int collect_vpd_data(struct cudbg_init *, struct cudbg_buffer *, 150*f856f099SNavdeep Parhar struct cudbg_error *); 151*f856f099SNavdeep Parhar static int collect_le_tcam(struct cudbg_init *, struct cudbg_buffer *, 152*f856f099SNavdeep Parhar struct cudbg_error *); 153*f856f099SNavdeep Parhar static int collect_cctrl(struct cudbg_init *, struct cudbg_buffer *, 154*f856f099SNavdeep Parhar struct cudbg_error *); 155*f856f099SNavdeep Parhar static int collect_ma_indirect(struct cudbg_init *, struct cudbg_buffer *, 156*f856f099SNavdeep Parhar struct cudbg_error *); 157*f856f099SNavdeep Parhar static int collect_ulptx_la(struct cudbg_init *, struct cudbg_buffer *, 158*f856f099SNavdeep Parhar struct cudbg_error *); 159*f856f099SNavdeep Parhar static int collect_up_cim_indirect(struct cudbg_init *, struct cudbg_buffer *, 160*f856f099SNavdeep Parhar struct cudbg_error *); 161*f856f099SNavdeep Parhar static int collect_pbt_tables(struct cudbg_init *, struct cudbg_buffer *, 162*f856f099SNavdeep Parhar struct cudbg_error *); 163*f856f099SNavdeep Parhar static int collect_mbox_log(struct cudbg_init *, struct cudbg_buffer *, 164*f856f099SNavdeep Parhar struct cudbg_error *); 165*f856f099SNavdeep Parhar static int collect_hma_indirect(struct cudbg_init *, struct cudbg_buffer *, 166*f856f099SNavdeep Parhar struct cudbg_error *); 167*f856f099SNavdeep Parhar 168*f856f099SNavdeep Parhar static int (*process_entity[]) 169*f856f099SNavdeep Parhar (struct cudbg_init *, struct cudbg_buffer *, struct cudbg_error *) = { 170*f856f099SNavdeep Parhar collect_reg_dump, 171*f856f099SNavdeep Parhar collect_fw_devlog, 172*f856f099SNavdeep Parhar collect_cim_la, /*3*/ 173*f856f099SNavdeep Parhar collect_cim_ma_la, 174*f856f099SNavdeep Parhar collect_cim_qcfg, 175*f856f099SNavdeep Parhar collect_cim_ibq_tp0, 176*f856f099SNavdeep Parhar collect_cim_ibq_tp1, 177*f856f099SNavdeep Parhar collect_cim_ibq_ulp, 178*f856f099SNavdeep Parhar collect_cim_ibq_sge0, 179*f856f099SNavdeep Parhar collect_cim_ibq_sge1, 180*f856f099SNavdeep Parhar collect_cim_ibq_ncsi, 181*f856f099SNavdeep Parhar collect_cim_obq_ulp0, 182*f856f099SNavdeep Parhar collect_cim_obq_ulp1, /*13*/ 183*f856f099SNavdeep Parhar collect_cim_obq_ulp2, 184*f856f099SNavdeep Parhar collect_cim_obq_ulp3, 185*f856f099SNavdeep Parhar collect_cim_obq_sge, 186*f856f099SNavdeep Parhar collect_cim_obq_ncsi, 187*f856f099SNavdeep Parhar collect_edc0_meminfo, 188*f856f099SNavdeep Parhar collect_edc1_meminfo, 189*f856f099SNavdeep Parhar collect_mc0_meminfo, 190*f856f099SNavdeep Parhar collect_mc1_meminfo, 191*f856f099SNavdeep Parhar collect_rss, /*22*/ 192*f856f099SNavdeep Parhar collect_rss_pf_config, 193*f856f099SNavdeep Parhar collect_rss_key, 194*f856f099SNavdeep Parhar collect_rss_vf_config, 195*f856f099SNavdeep Parhar collect_rss_config, /*26*/ 196*f856f099SNavdeep Parhar collect_path_mtu, /*27*/ 197*f856f099SNavdeep Parhar collect_sw_state, 198*f856f099SNavdeep Parhar collect_wtp_data, 199*f856f099SNavdeep Parhar collect_pm_stats, 200*f856f099SNavdeep Parhar collect_hw_sched, 201*f856f099SNavdeep Parhar collect_tcp_stats, 202*f856f099SNavdeep Parhar collect_tp_err_stats, 203*f856f099SNavdeep Parhar collect_fcoe_stats, 204*f856f099SNavdeep Parhar collect_rdma_stats, 205*f856f099SNavdeep Parhar collect_tp_indirect, 206*f856f099SNavdeep Parhar collect_sge_indirect, 207*f856f099SNavdeep Parhar collect_cpl_stats, 208*f856f099SNavdeep Parhar collect_ddp_stats, 209*f856f099SNavdeep Parhar collect_wc_stats, 210*f856f099SNavdeep Parhar collect_ulprx_la, 211*f856f099SNavdeep Parhar collect_lb_stats, 212*f856f099SNavdeep Parhar collect_tp_la, 213*f856f099SNavdeep Parhar collect_meminfo, 214*f856f099SNavdeep Parhar collect_cim_pif_la, 215*f856f099SNavdeep Parhar collect_clk_info, 216*f856f099SNavdeep Parhar collect_obq_sge_rx_q0, 217*f856f099SNavdeep Parhar collect_obq_sge_rx_q1, 218*f856f099SNavdeep Parhar collect_macstats, 219*f856f099SNavdeep Parhar collect_pcie_indirect, 220*f856f099SNavdeep Parhar collect_pm_indirect, 221*f856f099SNavdeep Parhar collect_full, 222*f856f099SNavdeep Parhar collect_tx_rate, 223*f856f099SNavdeep Parhar collect_tid, 224*f856f099SNavdeep Parhar collect_pcie_config, 225*f856f099SNavdeep Parhar collect_dump_context, 226*f856f099SNavdeep Parhar collect_mps_tcam, 227*f856f099SNavdeep Parhar collect_vpd_data, 228*f856f099SNavdeep Parhar collect_le_tcam, 229*f856f099SNavdeep Parhar collect_cctrl, 230*f856f099SNavdeep Parhar collect_ma_indirect, 231*f856f099SNavdeep Parhar collect_ulptx_la, 232*f856f099SNavdeep Parhar NULL, /* ext entity */ 233*f856f099SNavdeep Parhar collect_up_cim_indirect, 234*f856f099SNavdeep Parhar collect_pbt_tables, 235*f856f099SNavdeep Parhar collect_mbox_log, 236*f856f099SNavdeep Parhar collect_hma_indirect, 237*f856f099SNavdeep Parhar }; 238*f856f099SNavdeep Parhar 239*f856f099SNavdeep Parhar struct large_entity { 240*f856f099SNavdeep Parhar int entity_code; 241*f856f099SNavdeep Parhar int skip_flag; 242*f856f099SNavdeep Parhar int priority; /* 1 is high priority */ 243*f856f099SNavdeep Parhar }; 244*f856f099SNavdeep Parhar 245*f856f099SNavdeep Parhar static int read_cim_ibq(struct cudbg_init *, struct cudbg_buffer *, 246*f856f099SNavdeep Parhar struct cudbg_error * , int); 247*f856f099SNavdeep Parhar static int read_cim_obq(struct cudbg_init *, struct cudbg_buffer *, 248*f856f099SNavdeep Parhar struct cudbg_error *, int); 249*f856f099SNavdeep Parhar int get_entity_hdr(void *outbuf, int i, u32 size, struct cudbg_entity_hdr **); 250*f856f099SNavdeep Parhar void skip_entity(int entity_code); 251*f856f099SNavdeep Parhar void reset_skip_entity(void); 252*f856f099SNavdeep Parhar int is_large_entity(int entity_code); 253*f856f099SNavdeep Parhar #endif 254