Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0-only */
0002 /*
0003  *  Copyright (C) 2017 Chelsio Communications.  All rights reserved.
0004  */
0005 
0006 #ifndef __CUDBG_LIB_H__
0007 #define __CUDBG_LIB_H__
0008 
0009 int cudbg_collect_reg_dump(struct cudbg_init *pdbg_init,
0010                struct cudbg_buffer *dbg_buff,
0011                struct cudbg_error *cudbg_err);
0012 int cudbg_collect_fw_devlog(struct cudbg_init *pdbg_init,
0013                 struct cudbg_buffer *dbg_buff,
0014                 struct cudbg_error *cudbg_err);
0015 int cudbg_collect_cim_la(struct cudbg_init *pdbg_init,
0016              struct cudbg_buffer *dbg_buff,
0017              struct cudbg_error *cudbg_err);
0018 int cudbg_collect_cim_ma_la(struct cudbg_init *pdbg_init,
0019                 struct cudbg_buffer *dbg_buff,
0020                 struct cudbg_error *cudbg_err);
0021 int cudbg_collect_cim_qcfg(struct cudbg_init *pdbg_init,
0022                struct cudbg_buffer *dbg_buff,
0023                struct cudbg_error *cudbg_err);
0024 int cudbg_collect_cim_ibq_tp0(struct cudbg_init *pdbg_init,
0025                   struct cudbg_buffer *dbg_buff,
0026                   struct cudbg_error *cudbg_err);
0027 int cudbg_collect_cim_ibq_tp1(struct cudbg_init *pdbg_init,
0028                   struct cudbg_buffer *dbg_buff,
0029                   struct cudbg_error *cudbg_err);
0030 int cudbg_collect_cim_ibq_ulp(struct cudbg_init *pdbg_init,
0031                   struct cudbg_buffer *dbg_buff,
0032                   struct cudbg_error *cudbg_err);
0033 int cudbg_collect_cim_ibq_sge0(struct cudbg_init *pdbg_init,
0034                    struct cudbg_buffer *dbg_buff,
0035                    struct cudbg_error *cudbg_err);
0036 int cudbg_collect_cim_ibq_sge1(struct cudbg_init *pdbg_init,
0037                    struct cudbg_buffer *dbg_buff,
0038                    struct cudbg_error *cudbg_err);
0039 int cudbg_collect_cim_ibq_ncsi(struct cudbg_init *pdbg_init,
0040                    struct cudbg_buffer *dbg_buff,
0041                    struct cudbg_error *cudbg_err);
0042 int cudbg_collect_cim_obq_ulp0(struct cudbg_init *pdbg_init,
0043                    struct cudbg_buffer *dbg_buff,
0044                    struct cudbg_error *cudbg_err);
0045 int cudbg_collect_cim_obq_ulp1(struct cudbg_init *pdbg_init,
0046                    struct cudbg_buffer *dbg_buff,
0047                    struct cudbg_error *cudbg_err);
0048 int cudbg_collect_cim_obq_ulp2(struct cudbg_init *pdbg_init,
0049                    struct cudbg_buffer *dbg_buff,
0050                    struct cudbg_error *cudbg_err);
0051 int cudbg_collect_cim_obq_ulp3(struct cudbg_init *pdbg_init,
0052                    struct cudbg_buffer *dbg_buff,
0053                    struct cudbg_error *cudbg_err);
0054 int cudbg_collect_cim_obq_sge(struct cudbg_init *pdbg_init,
0055                   struct cudbg_buffer *dbg_buff,
0056                   struct cudbg_error *cudbg_err);
0057 int cudbg_collect_cim_obq_ncsi(struct cudbg_init *pdbg_init,
0058                    struct cudbg_buffer *dbg_buff,
0059                    struct cudbg_error *cudbg_err);
0060 int cudbg_collect_edc0_meminfo(struct cudbg_init *pdbg_init,
0061                    struct cudbg_buffer *dbg_buff,
0062                    struct cudbg_error *cudbg_err);
0063 int cudbg_collect_edc1_meminfo(struct cudbg_init *pdbg_init,
0064                    struct cudbg_buffer *dbg_buff,
0065                    struct cudbg_error *cudbg_err);
0066 int cudbg_collect_mc0_meminfo(struct cudbg_init *pdbg_init,
0067                   struct cudbg_buffer *dbg_buff,
0068                   struct cudbg_error *cudbg_err);
0069 int cudbg_collect_mc1_meminfo(struct cudbg_init *pdbg_init,
0070                   struct cudbg_buffer *dbg_buff,
0071                   struct cudbg_error *cudbg_err);
0072 int cudbg_collect_rss(struct cudbg_init *pdbg_init,
0073               struct cudbg_buffer *dbg_buff,
0074               struct cudbg_error *cudbg_err);
0075 int cudbg_collect_rss_vf_config(struct cudbg_init *pdbg_init,
0076                 struct cudbg_buffer *dbg_buff,
0077                 struct cudbg_error *cudbg_err);
0078 int cudbg_collect_tp_indirect(struct cudbg_init *pdbg_init,
0079                   struct cudbg_buffer *dbg_buff,
0080                   struct cudbg_error *cudbg_err);
0081 int cudbg_collect_path_mtu(struct cudbg_init *pdbg_init,
0082                struct cudbg_buffer *dbg_buff,
0083                struct cudbg_error *cudbg_err);
0084 int cudbg_collect_pm_stats(struct cudbg_init *pdbg_init,
0085                struct cudbg_buffer *dbg_buff,
0086                struct cudbg_error *cudbg_err);
0087 int cudbg_collect_hw_sched(struct cudbg_init *pdbg_init,
0088                struct cudbg_buffer *dbg_buff,
0089                struct cudbg_error *cudbg_err);
0090 int cudbg_collect_sge_indirect(struct cudbg_init *pdbg_init,
0091                    struct cudbg_buffer *dbg_buff,
0092                    struct cudbg_error *cudbg_err);
0093 int cudbg_collect_ulprx_la(struct cudbg_init *pdbg_init,
0094                struct cudbg_buffer *dbg_buff,
0095                struct cudbg_error *cudbg_err);
0096 int cudbg_collect_tp_la(struct cudbg_init *pdbg_init,
0097             struct cudbg_buffer *dbg_buff,
0098             struct cudbg_error *cudbg_err);
0099 int cudbg_collect_meminfo(struct cudbg_init *pdbg_init,
0100               struct cudbg_buffer *dbg_buff,
0101               struct cudbg_error *cudbg_err);
0102 int cudbg_collect_cim_pif_la(struct cudbg_init *pdbg_init,
0103                  struct cudbg_buffer *dbg_buff,
0104                  struct cudbg_error *cudbg_err);
0105 int cudbg_collect_clk_info(struct cudbg_init *pdbg_init,
0106                struct cudbg_buffer *dbg_buff,
0107                struct cudbg_error *cudbg_err);
0108 int cudbg_collect_obq_sge_rx_q0(struct cudbg_init *pdbg_init,
0109                 struct cudbg_buffer *dbg_buff,
0110                 struct cudbg_error *cudbg_err);
0111 int cudbg_collect_obq_sge_rx_q1(struct cudbg_init *pdbg_init,
0112                 struct cudbg_buffer *dbg_buff,
0113                 struct cudbg_error *cudbg_err);
0114 int cudbg_collect_pcie_indirect(struct cudbg_init *pdbg_init,
0115                 struct cudbg_buffer *dbg_buff,
0116                 struct cudbg_error *cudbg_err);
0117 int cudbg_collect_pm_indirect(struct cudbg_init *pdbg_init,
0118                   struct cudbg_buffer *dbg_buff,
0119                   struct cudbg_error *cudbg_err);
0120 int cudbg_collect_tid(struct cudbg_init *pdbg_init,
0121               struct cudbg_buffer *dbg_buff,
0122               struct cudbg_error *cudbg_err);
0123 int cudbg_collect_pcie_config(struct cudbg_init *pdbg_init,
0124                   struct cudbg_buffer *dbg_buff,
0125                   struct cudbg_error *cudbg_err);
0126 int cudbg_collect_dump_context(struct cudbg_init *pdbg_init,
0127                    struct cudbg_buffer *dbg_buff,
0128                    struct cudbg_error *cudbg_err);
0129 int cudbg_collect_mps_tcam(struct cudbg_init *pdbg_init,
0130                struct cudbg_buffer *dbg_buff,
0131                struct cudbg_error *cudbg_err);
0132 int cudbg_collect_vpd_data(struct cudbg_init *pdbg_init,
0133                struct cudbg_buffer *dbg_buff,
0134                struct cudbg_error *cudbg_err);
0135 int cudbg_collect_le_tcam(struct cudbg_init *pdbg_init,
0136               struct cudbg_buffer *dbg_buff,
0137               struct cudbg_error *cudbg_err);
0138 int cudbg_collect_cctrl(struct cudbg_init *pdbg_init,
0139             struct cudbg_buffer *dbg_buff,
0140             struct cudbg_error *cudbg_err);
0141 int cudbg_collect_ma_indirect(struct cudbg_init *pdbg_init,
0142                   struct cudbg_buffer *dbg_buff,
0143                   struct cudbg_error *cudbg_err);
0144 int cudbg_collect_ulptx_la(struct cudbg_init *pdbg_init,
0145                struct cudbg_buffer *dbg_buff,
0146                struct cudbg_error *cudbg_err);
0147 int cudbg_collect_up_cim_indirect(struct cudbg_init *pdbg_init,
0148                   struct cudbg_buffer *dbg_buff,
0149                   struct cudbg_error *cudbg_err);
0150 int cudbg_collect_pbt_tables(struct cudbg_init *pdbg_init,
0151                  struct cudbg_buffer *dbg_buff,
0152                  struct cudbg_error *cudbg_err);
0153 int cudbg_collect_mbox_log(struct cudbg_init *pdbg_init,
0154                struct cudbg_buffer *dbg_buff,
0155                struct cudbg_error *cudbg_err);
0156 int cudbg_collect_hma_indirect(struct cudbg_init *pdbg_init,
0157                    struct cudbg_buffer *dbg_buff,
0158                    struct cudbg_error *cudbg_err);
0159 int cudbg_collect_hma_meminfo(struct cudbg_init *pdbg_init,
0160                   struct cudbg_buffer *dbg_buff,
0161                   struct cudbg_error *cudbg_err);
0162 int cudbg_collect_qdesc(struct cudbg_init *pdbg_init,
0163             struct cudbg_buffer *dbg_buff,
0164             struct cudbg_error *cudbg_err);
0165 int cudbg_collect_flash(struct cudbg_init *pdbg_init,
0166             struct cudbg_buffer *dbg_buff,
0167             struct cudbg_error *cudbg_err);
0168 
0169 u32 cudbg_get_entity_length(struct adapter *adap, u32 entity);
0170 struct cudbg_entity_hdr *cudbg_get_entity_hdr(void *outbuf, int i);
0171 void cudbg_align_debug_buffer(struct cudbg_buffer *dbg_buff,
0172                   struct cudbg_entity_hdr *entity_hdr);
0173 u32 cudbg_cim_obq_size(struct adapter *padap, int qid);
0174 int cudbg_dump_context_size(struct adapter *padap);
0175 
0176 int cudbg_fill_meminfo(struct adapter *padap,
0177                struct cudbg_meminfo *meminfo_buff);
0178 void cudbg_fill_le_tcam_info(struct adapter *padap,
0179                  struct cudbg_tcam *tcam_region);
0180 void cudbg_fill_qdesc_num_and_size(const struct adapter *padap,
0181                    u32 *num, u32 *size);
0182 
0183 static inline u32 cudbg_uld_txq_to_qtype(u32 uld)
0184 {
0185     switch (uld) {
0186     case CXGB4_TX_OFLD:
0187         return CUDBG_QTYPE_OFLD_TXQ;
0188     case CXGB4_TX_CRYPTO:
0189         return CUDBG_QTYPE_CRYPTO_TXQ;
0190     }
0191 
0192     return CUDBG_QTYPE_UNKNOWN;
0193 }
0194 
0195 static inline u32 cudbg_uld_rxq_to_qtype(u32 uld)
0196 {
0197     switch (uld) {
0198     case CXGB4_ULD_RDMA:
0199         return CUDBG_QTYPE_RDMA_RXQ;
0200     case CXGB4_ULD_ISCSI:
0201         return CUDBG_QTYPE_ISCSI_RXQ;
0202     case CXGB4_ULD_ISCSIT:
0203         return CUDBG_QTYPE_ISCSIT_RXQ;
0204     case CXGB4_ULD_CRYPTO:
0205         return CUDBG_QTYPE_CRYPTO_RXQ;
0206     case CXGB4_ULD_TLS:
0207         return CUDBG_QTYPE_TLS_RXQ;
0208     }
0209 
0210     return CUDBG_QTYPE_UNKNOWN;
0211 }
0212 
0213 static inline u32 cudbg_uld_flq_to_qtype(u32 uld)
0214 {
0215     switch (uld) {
0216     case CXGB4_ULD_RDMA:
0217         return CUDBG_QTYPE_RDMA_FLQ;
0218     case CXGB4_ULD_ISCSI:
0219         return CUDBG_QTYPE_ISCSI_FLQ;
0220     case CXGB4_ULD_ISCSIT:
0221         return CUDBG_QTYPE_ISCSIT_FLQ;
0222     case CXGB4_ULD_CRYPTO:
0223         return CUDBG_QTYPE_CRYPTO_FLQ;
0224     case CXGB4_ULD_TLS:
0225         return CUDBG_QTYPE_TLS_FLQ;
0226     }
0227 
0228     return CUDBG_QTYPE_UNKNOWN;
0229 }
0230 
0231 static inline u32 cudbg_uld_ciq_to_qtype(u32 uld)
0232 {
0233     switch (uld) {
0234     case CXGB4_ULD_RDMA:
0235         return CUDBG_QTYPE_RDMA_CIQ;
0236     }
0237 
0238     return CUDBG_QTYPE_UNKNOWN;
0239 }
0240 
0241 static inline void cudbg_fill_qdesc_txq(const struct sge_txq *txq,
0242                     enum cudbg_qdesc_qtype type,
0243                     struct cudbg_qdesc_entry *entry)
0244 {
0245     entry->qtype = type;
0246     entry->qid = txq->cntxt_id;
0247     entry->desc_size = sizeof(struct tx_desc);
0248     entry->num_desc = txq->size;
0249     entry->data_size = txq->size * sizeof(struct tx_desc);
0250     memcpy(entry->data, txq->desc, entry->data_size);
0251 }
0252 
0253 static inline void cudbg_fill_qdesc_rxq(const struct sge_rspq *rxq,
0254                     enum cudbg_qdesc_qtype type,
0255                     struct cudbg_qdesc_entry *entry)
0256 {
0257     entry->qtype = type;
0258     entry->qid = rxq->cntxt_id;
0259     entry->desc_size = rxq->iqe_len;
0260     entry->num_desc = rxq->size;
0261     entry->data_size = rxq->size * rxq->iqe_len;
0262     memcpy(entry->data, rxq->desc, entry->data_size);
0263 }
0264 
0265 static inline void cudbg_fill_qdesc_flq(const struct sge_fl *flq,
0266                     enum cudbg_qdesc_qtype type,
0267                     struct cudbg_qdesc_entry *entry)
0268 {
0269     entry->qtype = type;
0270     entry->qid = flq->cntxt_id;
0271     entry->desc_size = sizeof(__be64);
0272     entry->num_desc = flq->size;
0273     entry->data_size = flq->size * sizeof(__be64);
0274     memcpy(entry->data, flq->desc, entry->data_size);
0275 }
0276 
0277 static inline
0278 struct cudbg_qdesc_entry *cudbg_next_qdesc(struct cudbg_qdesc_entry *e)
0279 {
0280     return (struct cudbg_qdesc_entry *)
0281            ((u8 *)e + sizeof(*e) + e->data_size);
0282 }
0283 #endif /* __CUDBG_LIB_H__ */