284 lines · c
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 inline278struct 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__ */284