The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/cxgbe/cudbg/cudbg.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*-
    2  * Copyright (c) 2017 Chelsio Communications, Inc.
    3  * All rights reserved.
    4  *
    5  * Redistribution and use in source and binary forms, with or without
    6  * modification, are permitted provided that the following conditions
    7  * are met:
    8  * 1. Redistributions of source code must retain the above copyright
    9  *    notice, this list of conditions and the following disclaimer.
   10  * 2. Redistributions in binary form must reproduce the above copyright
   11  *    notice, this list of conditions and the following disclaimer in the
   12  *    documentation and/or other materials provided with the distribution.
   13  *
   14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
   15  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
   18  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   22  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   23  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   24  * SUCH DAMAGE.
   25  *
   26  * $FreeBSD$
   27  *
   28  */
   29 
   30 /*
   31  * Chelsio Unified Debug Interface header file.
   32  * Version 1.1
   33  */
   34 #ifndef _CUDBG_IF_H_
   35 #define _CUDBG_IF_H_
   36 
   37 #ifdef __GNUC__
   38 #define ATTRIBUTE_UNUSED __attribute__ ((unused))
   39 #else
   40 #define ATTRIBUTE_UNUSED
   41 #endif
   42 
   43 #if defined(CONFIG_CUDBG_DEBUG)
   44 #define cudbg_debug(pdbg_init, format,  ...) do {\
   45         pdbg_init->print(format, ##__VA_ARGS__); \
   46 } while (0)
   47 #else
   48 #define cudbg_debug(pdbg_init, format,  ...) do { } while (0)
   49 #endif
   50 
   51 #define OUT
   52 #define IN
   53 #define INOUT
   54 
   55 /* Error codes */
   56 
   57 #define CUDBG_STATUS_SUCCESS                 0
   58 #define CUDBG_STATUS_NOSPACE                -2
   59 #define CUDBG_STATUS_FLASH_WRITE_FAIL       -3
   60 #define CUDBG_STATUS_FLASH_READ_FAIL        -4
   61 #define CUDBG_STATUS_UNDEFINED_OUT_BUF      -5
   62 #define CUDBG_STATUS_UNDEFINED_CBFN         -6
   63 #define CUDBG_STATUS_UNDEFINED_PRINTF_CBFN  -7
   64 #define CUDBG_STATUS_ADAP_INVALID           -8
   65 #define CUDBG_STATUS_FLASH_EMPTY            -9
   66 #define CUDBG_STATUS_NO_ADAPTER             -10
   67 #define CUDBG_STATUS_NO_SIGNATURE           -11
   68 #define CUDBG_STATUS_MULTIPLE_REG           -12
   69 #define CUDBG_STATUS_UNREGISTERED           -13
   70 #define CUDBG_STATUS_UNDEFINED_ENTITY       -14
   71 #define CUDBG_STATUS_REG_FAIlED             -15
   72 #define CUDBG_STATUS_DEVLOG_FAILED          -16
   73 #define CUDBG_STATUS_SMALL_BUFF             -17
   74 #define CUDBG_STATUS_CHKSUM_MISSMATCH       -18
   75 #define CUDBG_STATUS_NO_SCRATCH_MEM         -19
   76 #define CUDBG_STATUS_OUTBUFF_OVERFLOW       -20
   77 #define CUDBG_STATUS_INVALID_BUFF           -21  /* Invalid magic */
   78 #define CUDBG_STATUS_FILE_OPEN_FAIL         -22
   79 #define CUDBG_STATUS_DEVLOG_INT_FAIL        -23
   80 #define CUDBG_STATUS_ENTITY_NOT_FOUND       -24
   81 #define CUDBG_STATUS_DECOMPRESS_FAIL        -25
   82 #define CUDBG_STATUS_BUFFER_SHORT           -26
   83 #define CUDBG_METADATA_VERSION_MISMATCH     -27
   84 #define CUDBG_STATUS_NOT_IMPLEMENTED        -28
   85 #define CUDBG_SYSTEM_ERROR                  -29
   86 #define CUDBG_STATUS_MMAP_FAILED            -30
   87 #define CUDBG_STATUS_FILE_WRITE_FAILED      -31
   88 #define CUDBG_STATUS_CCLK_NOT_DEFINED       -32
   89 #define CUDBG_STATUS_FLASH_FULL            -33
   90 #define CUDBG_STATUS_SECTOR_EMPTY          -34
   91 #define CUDBG_STATUS_ENTITY_NOT_REQUESTED  -35
   92 #define CUDBG_STATUS_NOT_SUPPORTED         -36
   93 #define CUDBG_STATUS_FILE_READ_FAILED      -37
   94 #define CUDBG_STATUS_CORRUPTED             -38
   95 #define CUDBG_STATUS_INVALID_INDEX         -39
   96 
   97 #define CUDBG_MAJOR_VERSION                 1
   98 #define CUDBG_MINOR_VERSION                 14
   99 #define CUDBG_BUILD_VERSION                 0
  100 
  101 #define CUDBG_FILE_NAME_LEN 256
  102 #define CUDBG_DIR_NAME_LEN  256
  103 #define CUDBG_MAX_BITMAP_LEN 16
  104 
  105 static char ATTRIBUTE_UNUSED * err_msg[] = {
  106         "Success",
  107         "Unknown",
  108         "No space",
  109         "Flash write fail",
  110         "Flash read fail",
  111         "Undefined out buf",
  112         "Callback function undefined",
  113         "Print callback function undefined",
  114         "ADAP invalid",
  115         "Flash empty",
  116         "No adapter",
  117         "No signature",
  118         "Multiple registration",
  119         "Unregistered",
  120         "Undefined entity",
  121         "Reg failed",
  122         "Devlog failed",
  123         "Small buff",
  124         "Checksum mismatch",
  125         "No scratch memory",
  126         "Outbuff overflow",
  127         "Invalid buffer",
  128         "File open fail",
  129         "Devlog int fail",
  130         "Entity not found",
  131         "Decompress fail",
  132         "Buffer short",
  133         "Version mismatch",
  134         "Not implemented",
  135         "System error",
  136         "Mmap failed",
  137         "File write failed",
  138         "cclk not defined",
  139         "Flash full",
  140         "Sector empty",
  141         "Entity not requested",
  142         "Not supported",
  143         "File read fail",
  144         "Corrupted",
  145         "Invalid Index"
  146 };
  147 
  148 enum CUDBG_DBG_ENTITY_TYPE {
  149         CUDBG_ALL          = 0,
  150         CUDBG_REG_DUMP     = 1,
  151         CUDBG_DEV_LOG      = 2,
  152         CUDBG_CIM_LA       = 3,
  153         CUDBG_CIM_MA_LA    = 4,
  154         CUDBG_CIM_QCFG     = 5,
  155         CUDBG_CIM_IBQ_TP0  = 6,
  156         CUDBG_CIM_IBQ_TP1  = 7,
  157         CUDBG_CIM_IBQ_ULP  = 8,
  158         CUDBG_CIM_IBQ_SGE0 = 9,
  159         CUDBG_CIM_IBQ_SGE1 = 10,
  160         CUDBG_CIM_IBQ_NCSI = 11,
  161         CUDBG_CIM_OBQ_ULP0 = 12,
  162         CUDBG_CIM_OBQ_ULP1 = 13,
  163         CUDBG_CIM_OBQ_ULP2 = 14,
  164         CUDBG_CIM_OBQ_ULP3 = 15,
  165         CUDBG_CIM_OBQ_SGE  = 16,
  166         CUDBG_CIM_OBQ_NCSI = 17,
  167         CUDBG_EDC0         = 18,
  168         CUDBG_EDC1         = 19,
  169         CUDBG_MC0          = 20,
  170         CUDBG_MC1          = 21,
  171         CUDBG_RSS          = 22,
  172         CUDBG_RSS_PF_CONF  = 23,
  173         CUDBG_RSS_KEY      = 24,
  174         CUDBG_RSS_VF_CONF  = 25,
  175         CUDBG_RSS_CONF     = 26,
  176         CUDBG_PATH_MTU     = 27,
  177         CUDBG_SW_STATE     = 28,
  178         CUDBG_WTP          = 29,
  179         CUDBG_PM_STATS     = 30,
  180         CUDBG_HW_SCHED     = 31,
  181         CUDBG_TCP_STATS    = 32,
  182         CUDBG_TP_ERR_STATS = 33,
  183         CUDBG_FCOE_STATS   = 34,
  184         CUDBG_RDMA_STATS   = 35,
  185         CUDBG_TP_INDIRECT  = 36,
  186         CUDBG_SGE_INDIRECT = 37,
  187         CUDBG_CPL_STATS    = 38,
  188         CUDBG_DDP_STATS    = 39,
  189         CUDBG_WC_STATS     = 40,
  190         CUDBG_ULPRX_LA     = 41,
  191         CUDBG_LB_STATS     = 42,
  192         CUDBG_TP_LA        = 43,
  193         CUDBG_MEMINFO      = 44,
  194         CUDBG_CIM_PIF_LA   = 45,
  195         CUDBG_CLK          = 46,
  196         CUDBG_CIM_OBQ_RXQ0 = 47,
  197         CUDBG_CIM_OBQ_RXQ1 = 48,
  198         CUDBG_MAC_STATS    = 49,
  199         CUDBG_PCIE_INDIRECT = 50,
  200         CUDBG_PM_INDIRECT  = 51,
  201         CUDBG_FULL         = 52,
  202         CUDBG_TX_RATE      = 53,
  203         CUDBG_TID_INFO     = 54,
  204         CUDBG_PCIE_CONFIG  = 55,
  205         CUDBG_DUMP_CONTEXT = 56,
  206         CUDBG_MPS_TCAM     = 57,
  207         CUDBG_VPD_DATA     = 58,
  208         CUDBG_LE_TCAM      = 59,
  209         CUDBG_CCTRL        = 60,
  210         CUDBG_MA_INDIRECT  = 61,
  211         CUDBG_ULPTX_LA     = 62,
  212         CUDBG_EXT_ENTITY   = 63,
  213         CUDBG_UP_CIM_INDIRECT = 64,
  214         CUDBG_PBT_TABLE    = 65,
  215         CUDBG_MBOX_LOG     = 66,
  216         CUDBG_HMA_INDIRECT = 67,
  217         CUDBG_MAX_ENTITY   = 68,
  218 };
  219 
  220 #define ENTITY_FLAG_NULL 0
  221 #define ENTITY_FLAG_REGISTER 1
  222 #define ENTITY_FLAG_BINARY 2
  223 #define ENTITY_FLAG_FW_NO_ATTACH    3
  224 
  225 /* file_name matches Linux cxgb4 debugfs entry names. */
  226 struct el {char *name; char *file_name; int bit; u32 flag; };
  227 static struct el ATTRIBUTE_UNUSED entity_list[] = {
  228         {"all", "all", CUDBG_ALL, ENTITY_FLAG_NULL},
  229         {"regdump", "regdump", CUDBG_REG_DUMP, 1 << ENTITY_FLAG_REGISTER},
  230         /* {"reg", CUDBG_REG_DUMP},*/
  231         {"devlog", "devlog", CUDBG_DEV_LOG, ENTITY_FLAG_NULL},
  232         {"cimla", "cim_la", CUDBG_CIM_LA, ENTITY_FLAG_NULL},
  233         {"cimmala", "cim_ma_la", CUDBG_CIM_MA_LA, ENTITY_FLAG_NULL},
  234         {"cimqcfg", "cim_qcfg", CUDBG_CIM_QCFG, ENTITY_FLAG_NULL},
  235         {"ibqtp0", "ibq_tp0", CUDBG_CIM_IBQ_TP0, ENTITY_FLAG_NULL},
  236         {"ibqtp1", "ibq_tp1", CUDBG_CIM_IBQ_TP1, ENTITY_FLAG_NULL},
  237         {"ibqulp", "ibq_ulp", CUDBG_CIM_IBQ_ULP, ENTITY_FLAG_NULL},
  238         {"ibqsge0", "ibq_sge0", CUDBG_CIM_IBQ_SGE0, ENTITY_FLAG_NULL},
  239         {"ibqsge1", "ibq_sge1", CUDBG_CIM_IBQ_SGE1, ENTITY_FLAG_NULL},
  240         {"ibqncsi", "ibq_ncsi", CUDBG_CIM_IBQ_NCSI, ENTITY_FLAG_NULL},
  241         {"obqulp0", "obq_ulp0", CUDBG_CIM_OBQ_ULP0, ENTITY_FLAG_NULL},
  242         /* {"cimobqulp1", CUDBG_CIM_OBQ_ULP1},*/
  243         {"obqulp1", "obq_ulp1", CUDBG_CIM_OBQ_ULP1, ENTITY_FLAG_NULL},
  244         {"obqulp2", "obq_ulp2", CUDBG_CIM_OBQ_ULP2, ENTITY_FLAG_NULL},
  245         {"obqulp3", "obq_ulp3", CUDBG_CIM_OBQ_ULP3, ENTITY_FLAG_NULL},
  246         {"obqsge", "obq_sge", CUDBG_CIM_OBQ_SGE, ENTITY_FLAG_NULL},
  247         {"obqncsi", "obq_ncsi", CUDBG_CIM_OBQ_NCSI, ENTITY_FLAG_NULL},
  248         {"edc0", "edc0", CUDBG_EDC0, (1 << ENTITY_FLAG_BINARY)},
  249         {"edc1", "edc1", CUDBG_EDC1, (1 << ENTITY_FLAG_BINARY)},
  250         {"mc0", "mc0", CUDBG_MC0, (1 << ENTITY_FLAG_BINARY)},
  251         {"mc1", "mc1", CUDBG_MC1, (1 << ENTITY_FLAG_BINARY)},
  252         {"rss", "rss", CUDBG_RSS, ENTITY_FLAG_NULL},
  253         {"rss_pf_config", "rss_pf_config", CUDBG_RSS_PF_CONF, ENTITY_FLAG_NULL},
  254         {"rss_key", "rss_key", CUDBG_RSS_KEY, ENTITY_FLAG_NULL},
  255         {"rss_vf_config", "rss_vf_config", CUDBG_RSS_VF_CONF, ENTITY_FLAG_NULL},
  256         {"rss_config", "rss_config", CUDBG_RSS_CONF, ENTITY_FLAG_NULL},
  257         {"pathmtu", "path_mtus", CUDBG_PATH_MTU, ENTITY_FLAG_NULL},
  258         {"swstate", "sw_state", CUDBG_SW_STATE, ENTITY_FLAG_NULL},
  259         {"wtp", "wtp", CUDBG_WTP, ENTITY_FLAG_NULL},
  260         {"pmstats", "pm_stats", CUDBG_PM_STATS, ENTITY_FLAG_NULL},
  261         {"hwsched", "hw_sched", CUDBG_HW_SCHED, ENTITY_FLAG_NULL},
  262         {"tcpstats", "tcp_stats", CUDBG_TCP_STATS, ENTITY_FLAG_NULL},
  263         {"tperrstats", "tp_err_stats", CUDBG_TP_ERR_STATS, ENTITY_FLAG_NULL},
  264         {"fcoestats", "fcoe_stats", CUDBG_FCOE_STATS, ENTITY_FLAG_NULL},
  265         {"rdmastats", "rdma_stats", CUDBG_RDMA_STATS, ENTITY_FLAG_NULL},
  266         {"tpindirect", "tp_indirect", CUDBG_TP_INDIRECT,
  267                                         1 << ENTITY_FLAG_REGISTER},
  268         {"sgeindirect", "sge_indirect", CUDBG_SGE_INDIRECT,
  269                                         1 << ENTITY_FLAG_REGISTER},
  270         {"cplstats", "cpl_stats", CUDBG_CPL_STATS, ENTITY_FLAG_NULL},
  271         {"ddpstats", "ddp_stats", CUDBG_DDP_STATS, ENTITY_FLAG_NULL},
  272         {"wcstats", "wc_stats", CUDBG_WC_STATS, ENTITY_FLAG_NULL},
  273         {"ulprxla", "ulprx_la", CUDBG_ULPRX_LA, ENTITY_FLAG_NULL},
  274         {"lbstats", "lb_stats", CUDBG_LB_STATS, ENTITY_FLAG_NULL},
  275         {"tpla", "tp_la", CUDBG_TP_LA, ENTITY_FLAG_NULL},
  276         {"meminfo", "meminfo", CUDBG_MEMINFO, ENTITY_FLAG_NULL},
  277         {"cimpifla", "cim_pif_la", CUDBG_CIM_PIF_LA, ENTITY_FLAG_NULL},
  278         {"clk", "clk", CUDBG_CLK, ENTITY_FLAG_NULL},
  279         {"obq_sge_rx_q0", "obq_sge_rx_q0", CUDBG_CIM_OBQ_RXQ0,
  280                                         ENTITY_FLAG_NULL},
  281         {"obq_sge_rx_q1", "obq_sge_rx_q1", CUDBG_CIM_OBQ_RXQ1,
  282                                         ENTITY_FLAG_NULL},
  283         {"macstats", "mac_stats", CUDBG_MAC_STATS, ENTITY_FLAG_NULL},
  284         {"pcieindirect", "pcie_indirect", CUDBG_PCIE_INDIRECT,
  285                                         1 << ENTITY_FLAG_REGISTER},
  286         {"pmindirect", "pm_indirect", CUDBG_PM_INDIRECT,
  287                                 1 << ENTITY_FLAG_REGISTER},
  288         {"full", "full", CUDBG_FULL, ENTITY_FLAG_NULL},
  289         {"txrate", "tx_rate", CUDBG_TX_RATE, ENTITY_FLAG_NULL},
  290         {"tidinfo", "tids", CUDBG_TID_INFO, ENTITY_FLAG_NULL |
  291                                 (1 << ENTITY_FLAG_FW_NO_ATTACH)},
  292         {"pcieconfig", "pcie_config", CUDBG_PCIE_CONFIG, ENTITY_FLAG_NULL},
  293         {"dumpcontext", "dump_context", CUDBG_DUMP_CONTEXT, ENTITY_FLAG_NULL},
  294         {"mpstcam", "mps_tcam", CUDBG_MPS_TCAM, ENTITY_FLAG_NULL},
  295         {"vpddata", "vpd_data", CUDBG_VPD_DATA, ENTITY_FLAG_NULL},
  296         {"letcam", "le_tcam", CUDBG_LE_TCAM, ENTITY_FLAG_NULL},
  297         {"cctrl", "cctrl", CUDBG_CCTRL, ENTITY_FLAG_NULL},
  298         {"maindirect", "ma_indirect", CUDBG_MA_INDIRECT,
  299                                 1 << ENTITY_FLAG_REGISTER},
  300         {"ulptxla", "ulptx_la", CUDBG_ULPTX_LA, ENTITY_FLAG_NULL},
  301         {"extentity", "ext_entity", CUDBG_EXT_ENTITY, ENTITY_FLAG_NULL},
  302         {"upcimindirect", "up_cim_indirect", CUDBG_UP_CIM_INDIRECT,
  303                                         1 << ENTITY_FLAG_REGISTER},
  304         {"pbttables", "pbt_tables", CUDBG_PBT_TABLE, ENTITY_FLAG_NULL},
  305         {"mboxlog", "mboxlog", CUDBG_MBOX_LOG, ENTITY_FLAG_NULL},
  306         {"hmaindirect", "hma_indirect", CUDBG_HMA_INDIRECT,
  307                                 1 << ENTITY_FLAG_REGISTER},
  308 };
  309 
  310 typedef int (*cudbg_print_cb) (char *str, ...);
  311 
  312 struct cudbg_init_hdr {
  313         u8   major_ver;
  314         u8   minor_ver;
  315         u8   build_ver;
  316         u8   res;
  317         u16  init_struct_size;
  318 };
  319 
  320 struct cudbg_flash_hdr {
  321         u32 signature;
  322         u8 major_ver;
  323         u8 minor_ver;
  324         u8 build_ver;
  325         u8 res;
  326         u64 timestamp;
  327         u64 time_res;
  328         u32 hdr_len;
  329         u32 data_len;
  330         u32 hdr_flags;
  331         u32 sec_seq_no;
  332         u32 reserved[22];
  333 };
  334 
  335 struct cudbg_param {
  336         u16                      param_type;
  337         u16                      reserved;
  338         union {
  339                 struct {
  340                         u32 memtype;    /* which memory (EDC0, EDC1, MC) */
  341                         u32 start;      /* start of log in firmware memory */
  342                         u32 size;       /* size of log */
  343                 } devlog_param;
  344                 struct {
  345                         struct mbox_cmd_log *log;
  346                         u16 mbox_cmds;
  347                 } mboxlog_param;
  348                 struct {
  349                         u8 caller_string[100];
  350                         u8 os_type;
  351                 } sw_state_param;
  352                 u64 time;
  353                 u8 tcb_bit_param;
  354                 void *adap;
  355                 void *access_lock;
  356         } u;
  357 };
  358 
  359 /* params for tcb_bit_param */
  360 #define CUDBG_TCB_BRIEF_PARAM      0x1
  361 #define CUDBG_TCB_FROM_CARD_PARAM  0x2
  362 #define CUDBG_TCB_AS_SCB_PARAM     0x4
  363 
  364 /*
  365  * * What is OFFLINE_VIEW_ONLY mode?
  366  *
  367  * cudbg frame work will be used only to interpret previously collected
  368  * data store in a file (i.e NOT hw flash)
  369  */
  370 
  371 struct cudbg_init {
  372         struct cudbg_init_hdr    header;
  373         struct adapter           *adap;          /* Pointer to adapter structure
  374                                                     with filled fields */
  375         cudbg_print_cb           print;          /* Platform dependent print
  376                                                     function */
  377         u32                      verbose:1;      /* Turn on verbose print */
  378         u32                      use_flash:1;    /* Use flash to collect or view
  379                                                     debug */
  380         u32                      full_mode:1;    /* If set, cudbg will pull in
  381                                                     common code */
  382         u32                      no_compress:1;  /* Dont compress will storing
  383                                                     the collected debug */
  384         u32                      info:1;         /* Show just the info, Dont
  385                                                     interpret */
  386         u32                      reserved:27;
  387         u8                       dbg_bitmap[CUDBG_MAX_BITMAP_LEN];
  388                                                 /* Bit map to select the dbg
  389                                                     data type to be collected
  390                                                     or viewed */
  391 };
  392 
  393 
  394 /********************************* Helper functions *************************/
  395 static inline void set_dbg_bitmap(u8 *bitmap, enum CUDBG_DBG_ENTITY_TYPE type)
  396 {
  397         int index = type / 8;
  398         int bit = type % 8;
  399 
  400         bitmap[index] |= (1 << bit);
  401 }
  402 
  403 static inline void reset_dbg_bitmap(u8 *bitmap, enum CUDBG_DBG_ENTITY_TYPE type)
  404 {
  405         int index = type / 8;
  406         int bit = type % 8;
  407 
  408         bitmap[index] &= ~(1 << bit);
  409 }
  410 
  411 /********************************* End of Helper functions
  412  * *************************/
  413 
  414 /* API Prototypes */
  415 
  416 /**
  417  *  cudbg_alloc_handle - Allocates and initializes a handle that represents
  418  *  cudbg state.  Needs to called first before calling any other function.
  419  *
  420  *  returns a pointer to memory that has a cudbg_init structure at the beginning
  421  *  and enough space after that for internal book keeping.
  422  */
  423 
  424 void *cudbg_alloc_handle(void);
  425 static inline struct cudbg_init *cudbg_get_init(void *handle)
  426 {
  427         return (handle);
  428 }
  429 
  430 /**
  431  *  cudbg_collect - Collect and store debug information.
  432  *  ## Parameters ##
  433  *  @handle : A pointer returned by cudbg_alloc_handle.
  434  *  @outbuf : pointer to output buffer, to store the collected information
  435  *            or to use it as a scratch buffer in case HW flash is used to
  436  *            store the debug information.
  437  *  @outbuf_size : Size of output buffer.
  438  *  ##  Return ##
  439  *  If the function succeeds, the return value will be size of debug information
  440  *  collected and stored.
  441  *  -ve value represent error.
  442  */
  443 int cudbg_collect(void *handle, void *outbuf, u32 *outbuf_size);
  444 
  445 /**
  446  *  cudbg_free_handle - Release cudbg resources.
  447  *  ## Parameters ##
  448  *  @handle : A pointer returned by cudbg_alloc_handle.
  449  */
  450 
  451 void cudbg_free_handle(IN void *handle);
  452 
  453 /**
  454  *  cudbg_read_flash_data - Read cudbg “flash” header from adapter flash.
  455  *                          This will be used by the consumer mainly to
  456  *                          know the size of the data in flash.
  457  *  ## Parameters ##
  458  *  @handle : A pointer returned by cudbg_hello.
  459  *  @data : A pointer to data/header buffer
  460  */
  461 
  462 int cudbg_read_flash_details(void *handle, struct cudbg_flash_hdr *data);
  463 
  464 /**
  465  *  cudbg_read_flash_data - Read cudbg dump contents stored in flash.
  466  *  ## Parameters ##
  467  *  @handle : A pointer returned by cudbg_hello.
  468  *  @data_buf : A pointer to data buffer.
  469  *  @data_buf_size : Data buffer size.
  470  */
  471 
  472 int cudbg_read_flash_data(void *handle, void *data_buf, u32 data_buf_size);
  473 
  474 #endif /* _CUDBG_IF_H_ */

Cache object: 797955084d45c245abb2a19352ac6cb9


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.