linux/drivers/net/ethernet/chelsio/cxgb4/cudbg_lib.h
<<
>>
Prefs
   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__ */
 284