0001
0002
0003
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