cudbg_lib.h (10446B)
1/* SPDX-License-Identifier: GPL-2.0-only */ 2/* 3 * Copyright (C) 2017 Chelsio Communications. All rights reserved. 4 */ 5 6#ifndef __CUDBG_LIB_H__ 7#define __CUDBG_LIB_H__ 8 9int cudbg_collect_reg_dump(struct cudbg_init *pdbg_init, 10 struct cudbg_buffer *dbg_buff, 11 struct cudbg_error *cudbg_err); 12int cudbg_collect_fw_devlog(struct cudbg_init *pdbg_init, 13 struct cudbg_buffer *dbg_buff, 14 struct cudbg_error *cudbg_err); 15int cudbg_collect_cim_la(struct cudbg_init *pdbg_init, 16 struct cudbg_buffer *dbg_buff, 17 struct cudbg_error *cudbg_err); 18int cudbg_collect_cim_ma_la(struct cudbg_init *pdbg_init, 19 struct cudbg_buffer *dbg_buff, 20 struct cudbg_error *cudbg_err); 21int cudbg_collect_cim_qcfg(struct cudbg_init *pdbg_init, 22 struct cudbg_buffer *dbg_buff, 23 struct cudbg_error *cudbg_err); 24int cudbg_collect_cim_ibq_tp0(struct cudbg_init *pdbg_init, 25 struct cudbg_buffer *dbg_buff, 26 struct cudbg_error *cudbg_err); 27int cudbg_collect_cim_ibq_tp1(struct cudbg_init *pdbg_init, 28 struct cudbg_buffer *dbg_buff, 29 struct cudbg_error *cudbg_err); 30int cudbg_collect_cim_ibq_ulp(struct cudbg_init *pdbg_init, 31 struct cudbg_buffer *dbg_buff, 32 struct cudbg_error *cudbg_err); 33int cudbg_collect_cim_ibq_sge0(struct cudbg_init *pdbg_init, 34 struct cudbg_buffer *dbg_buff, 35 struct cudbg_error *cudbg_err); 36int cudbg_collect_cim_ibq_sge1(struct cudbg_init *pdbg_init, 37 struct cudbg_buffer *dbg_buff, 38 struct cudbg_error *cudbg_err); 39int cudbg_collect_cim_ibq_ncsi(struct cudbg_init *pdbg_init, 40 struct cudbg_buffer *dbg_buff, 41 struct cudbg_error *cudbg_err); 42int cudbg_collect_cim_obq_ulp0(struct cudbg_init *pdbg_init, 43 struct cudbg_buffer *dbg_buff, 44 struct cudbg_error *cudbg_err); 45int cudbg_collect_cim_obq_ulp1(struct cudbg_init *pdbg_init, 46 struct cudbg_buffer *dbg_buff, 47 struct cudbg_error *cudbg_err); 48int cudbg_collect_cim_obq_ulp2(struct cudbg_init *pdbg_init, 49 struct cudbg_buffer *dbg_buff, 50 struct cudbg_error *cudbg_err); 51int cudbg_collect_cim_obq_ulp3(struct cudbg_init *pdbg_init, 52 struct cudbg_buffer *dbg_buff, 53 struct cudbg_error *cudbg_err); 54int cudbg_collect_cim_obq_sge(struct cudbg_init *pdbg_init, 55 struct cudbg_buffer *dbg_buff, 56 struct cudbg_error *cudbg_err); 57int cudbg_collect_cim_obq_ncsi(struct cudbg_init *pdbg_init, 58 struct cudbg_buffer *dbg_buff, 59 struct cudbg_error *cudbg_err); 60int cudbg_collect_edc0_meminfo(struct cudbg_init *pdbg_init, 61 struct cudbg_buffer *dbg_buff, 62 struct cudbg_error *cudbg_err); 63int cudbg_collect_edc1_meminfo(struct cudbg_init *pdbg_init, 64 struct cudbg_buffer *dbg_buff, 65 struct cudbg_error *cudbg_err); 66int cudbg_collect_mc0_meminfo(struct cudbg_init *pdbg_init, 67 struct cudbg_buffer *dbg_buff, 68 struct cudbg_error *cudbg_err); 69int cudbg_collect_mc1_meminfo(struct cudbg_init *pdbg_init, 70 struct cudbg_buffer *dbg_buff, 71 struct cudbg_error *cudbg_err); 72int cudbg_collect_rss(struct cudbg_init *pdbg_init, 73 struct cudbg_buffer *dbg_buff, 74 struct cudbg_error *cudbg_err); 75int cudbg_collect_rss_vf_config(struct cudbg_init *pdbg_init, 76 struct cudbg_buffer *dbg_buff, 77 struct cudbg_error *cudbg_err); 78int cudbg_collect_tp_indirect(struct cudbg_init *pdbg_init, 79 struct cudbg_buffer *dbg_buff, 80 struct cudbg_error *cudbg_err); 81int cudbg_collect_path_mtu(struct cudbg_init *pdbg_init, 82 struct cudbg_buffer *dbg_buff, 83 struct cudbg_error *cudbg_err); 84int cudbg_collect_pm_stats(struct cudbg_init *pdbg_init, 85 struct cudbg_buffer *dbg_buff, 86 struct cudbg_error *cudbg_err); 87int cudbg_collect_hw_sched(struct cudbg_init *pdbg_init, 88 struct cudbg_buffer *dbg_buff, 89 struct cudbg_error *cudbg_err); 90int cudbg_collect_sge_indirect(struct cudbg_init *pdbg_init, 91 struct cudbg_buffer *dbg_buff, 92 struct cudbg_error *cudbg_err); 93int cudbg_collect_ulprx_la(struct cudbg_init *pdbg_init, 94 struct cudbg_buffer *dbg_buff, 95 struct cudbg_error *cudbg_err); 96int cudbg_collect_tp_la(struct cudbg_init *pdbg_init, 97 struct cudbg_buffer *dbg_buff, 98 struct cudbg_error *cudbg_err); 99int cudbg_collect_meminfo(struct cudbg_init *pdbg_init, 100 struct cudbg_buffer *dbg_buff, 101 struct cudbg_error *cudbg_err); 102int cudbg_collect_cim_pif_la(struct cudbg_init *pdbg_init, 103 struct cudbg_buffer *dbg_buff, 104 struct cudbg_error *cudbg_err); 105int cudbg_collect_clk_info(struct cudbg_init *pdbg_init, 106 struct cudbg_buffer *dbg_buff, 107 struct cudbg_error *cudbg_err); 108int cudbg_collect_obq_sge_rx_q0(struct cudbg_init *pdbg_init, 109 struct cudbg_buffer *dbg_buff, 110 struct cudbg_error *cudbg_err); 111int cudbg_collect_obq_sge_rx_q1(struct cudbg_init *pdbg_init, 112 struct cudbg_buffer *dbg_buff, 113 struct cudbg_error *cudbg_err); 114int cudbg_collect_pcie_indirect(struct cudbg_init *pdbg_init, 115 struct cudbg_buffer *dbg_buff, 116 struct cudbg_error *cudbg_err); 117int cudbg_collect_pm_indirect(struct cudbg_init *pdbg_init, 118 struct cudbg_buffer *dbg_buff, 119 struct cudbg_error *cudbg_err); 120int cudbg_collect_tid(struct cudbg_init *pdbg_init, 121 struct cudbg_buffer *dbg_buff, 122 struct cudbg_error *cudbg_err); 123int cudbg_collect_pcie_config(struct cudbg_init *pdbg_init, 124 struct cudbg_buffer *dbg_buff, 125 struct cudbg_error *cudbg_err); 126int cudbg_collect_dump_context(struct cudbg_init *pdbg_init, 127 struct cudbg_buffer *dbg_buff, 128 struct cudbg_error *cudbg_err); 129int cudbg_collect_mps_tcam(struct cudbg_init *pdbg_init, 130 struct cudbg_buffer *dbg_buff, 131 struct cudbg_error *cudbg_err); 132int cudbg_collect_vpd_data(struct cudbg_init *pdbg_init, 133 struct cudbg_buffer *dbg_buff, 134 struct cudbg_error *cudbg_err); 135int cudbg_collect_le_tcam(struct cudbg_init *pdbg_init, 136 struct cudbg_buffer *dbg_buff, 137 struct cudbg_error *cudbg_err); 138int cudbg_collect_cctrl(struct cudbg_init *pdbg_init, 139 struct cudbg_buffer *dbg_buff, 140 struct cudbg_error *cudbg_err); 141int cudbg_collect_ma_indirect(struct cudbg_init *pdbg_init, 142 struct cudbg_buffer *dbg_buff, 143 struct cudbg_error *cudbg_err); 144int cudbg_collect_ulptx_la(struct cudbg_init *pdbg_init, 145 struct cudbg_buffer *dbg_buff, 146 struct cudbg_error *cudbg_err); 147int cudbg_collect_up_cim_indirect(struct cudbg_init *pdbg_init, 148 struct cudbg_buffer *dbg_buff, 149 struct cudbg_error *cudbg_err); 150int cudbg_collect_pbt_tables(struct cudbg_init *pdbg_init, 151 struct cudbg_buffer *dbg_buff, 152 struct cudbg_error *cudbg_err); 153int cudbg_collect_mbox_log(struct cudbg_init *pdbg_init, 154 struct cudbg_buffer *dbg_buff, 155 struct cudbg_error *cudbg_err); 156int cudbg_collect_hma_indirect(struct cudbg_init *pdbg_init, 157 struct cudbg_buffer *dbg_buff, 158 struct cudbg_error *cudbg_err); 159int cudbg_collect_hma_meminfo(struct cudbg_init *pdbg_init, 160 struct cudbg_buffer *dbg_buff, 161 struct cudbg_error *cudbg_err); 162int cudbg_collect_qdesc(struct cudbg_init *pdbg_init, 163 struct cudbg_buffer *dbg_buff, 164 struct cudbg_error *cudbg_err); 165int cudbg_collect_flash(struct cudbg_init *pdbg_init, 166 struct cudbg_buffer *dbg_buff, 167 struct cudbg_error *cudbg_err); 168 169u32 cudbg_get_entity_length(struct adapter *adap, u32 entity); 170struct cudbg_entity_hdr *cudbg_get_entity_hdr(void *outbuf, int i); 171void cudbg_align_debug_buffer(struct cudbg_buffer *dbg_buff, 172 struct cudbg_entity_hdr *entity_hdr); 173u32 cudbg_cim_obq_size(struct adapter *padap, int qid); 174int cudbg_dump_context_size(struct adapter *padap); 175 176int cudbg_fill_meminfo(struct adapter *padap, 177 struct cudbg_meminfo *meminfo_buff); 178void cudbg_fill_le_tcam_info(struct adapter *padap, 179 struct cudbg_tcam *tcam_region); 180void cudbg_fill_qdesc_num_and_size(const struct adapter *padap, 181 u32 *num, u32 *size); 182 183static inline u32 cudbg_uld_txq_to_qtype(u32 uld) 184{ 185 switch (uld) { 186 case CXGB4_TX_OFLD: 187 return CUDBG_QTYPE_OFLD_TXQ; 188 case CXGB4_TX_CRYPTO: 189 return CUDBG_QTYPE_CRYPTO_TXQ; 190 } 191 192 return CUDBG_QTYPE_UNKNOWN; 193} 194 195static inline u32 cudbg_uld_rxq_to_qtype(u32 uld) 196{ 197 switch (uld) { 198 case CXGB4_ULD_RDMA: 199 return CUDBG_QTYPE_RDMA_RXQ; 200 case CXGB4_ULD_ISCSI: 201 return CUDBG_QTYPE_ISCSI_RXQ; 202 case CXGB4_ULD_ISCSIT: 203 return CUDBG_QTYPE_ISCSIT_RXQ; 204 case CXGB4_ULD_CRYPTO: 205 return CUDBG_QTYPE_CRYPTO_RXQ; 206 case CXGB4_ULD_TLS: 207 return CUDBG_QTYPE_TLS_RXQ; 208 } 209 210 return CUDBG_QTYPE_UNKNOWN; 211} 212 213static inline u32 cudbg_uld_flq_to_qtype(u32 uld) 214{ 215 switch (uld) { 216 case CXGB4_ULD_RDMA: 217 return CUDBG_QTYPE_RDMA_FLQ; 218 case CXGB4_ULD_ISCSI: 219 return CUDBG_QTYPE_ISCSI_FLQ; 220 case CXGB4_ULD_ISCSIT: 221 return CUDBG_QTYPE_ISCSIT_FLQ; 222 case CXGB4_ULD_CRYPTO: 223 return CUDBG_QTYPE_CRYPTO_FLQ; 224 case CXGB4_ULD_TLS: 225 return CUDBG_QTYPE_TLS_FLQ; 226 } 227 228 return CUDBG_QTYPE_UNKNOWN; 229} 230 231static inline u32 cudbg_uld_ciq_to_qtype(u32 uld) 232{ 233 switch (uld) { 234 case CXGB4_ULD_RDMA: 235 return CUDBG_QTYPE_RDMA_CIQ; 236 } 237 238 return CUDBG_QTYPE_UNKNOWN; 239} 240 241static inline void cudbg_fill_qdesc_txq(const struct sge_txq *txq, 242 enum cudbg_qdesc_qtype type, 243 struct cudbg_qdesc_entry *entry) 244{ 245 entry->qtype = type; 246 entry->qid = txq->cntxt_id; 247 entry->desc_size = sizeof(struct tx_desc); 248 entry->num_desc = txq->size; 249 entry->data_size = txq->size * sizeof(struct tx_desc); 250 memcpy(entry->data, txq->desc, entry->data_size); 251} 252 253static inline void cudbg_fill_qdesc_rxq(const struct sge_rspq *rxq, 254 enum cudbg_qdesc_qtype type, 255 struct cudbg_qdesc_entry *entry) 256{ 257 entry->qtype = type; 258 entry->qid = rxq->cntxt_id; 259 entry->desc_size = rxq->iqe_len; 260 entry->num_desc = rxq->size; 261 entry->data_size = rxq->size * rxq->iqe_len; 262 memcpy(entry->data, rxq->desc, entry->data_size); 263} 264 265static inline void cudbg_fill_qdesc_flq(const struct sge_fl *flq, 266 enum cudbg_qdesc_qtype type, 267 struct cudbg_qdesc_entry *entry) 268{ 269 entry->qtype = type; 270 entry->qid = flq->cntxt_id; 271 entry->desc_size = sizeof(__be64); 272 entry->num_desc = flq->size; 273 entry->data_size = flq->size * sizeof(__be64); 274 memcpy(entry->data, flq->desc, entry->data_size); 275} 276 277static inline 278struct cudbg_qdesc_entry *cudbg_next_qdesc(struct cudbg_qdesc_entry *e) 279{ 280 return (struct cudbg_qdesc_entry *) 281 ((u8 *)e + sizeof(*e) + e->data_size); 282} 283#endif /* __CUDBG_LIB_H__ */