Developers Guide¶
QEP DPDK driver is implemented as an Ethernet poll mode driver in DPDK v18.11. It supports streaming interface to QDMA.
Driver interfaces and callbacks¶
The Driver registers two driver interfaces (net_qdma
for PFs and net_qdma_vf
for VFs) with DPDK RTE.
However, QEP supports only PF interface.
Below eth_dev_ops
callbacks are implemented by the driver interface of the DPDK driver.
static struct eth_dev_ops qdma_eth_dev_ops = {
.dev_configure = qdma_dev_configure,
.dev_infos_get = qdma_dev_infos_get,
.dev_start = qdma_dev_start,
.dev_stop = qdma_dev_stop,
.dev_close = qdma_dev_close,
.dev_reset = qdma_dev_reset,
.link_update = qdma_dev_link_update,
.dev_set_link_up = qep_dev_set_link_up,
.dev_set_link_down = qep_dev_set_link_down,
.rx_queue_setup = qdma_dev_rx_queue_setup,
.tx_queue_setup = qdma_dev_tx_queue_setup,
.rx_queue_release = qdma_dev_rx_queue_release,
.tx_queue_release = qdma_dev_tx_queue_release,
.rx_queue_start = qdma_dev_rx_queue_start,
.rx_queue_stop = qdma_dev_rx_queue_stop,
.tx_queue_start = qdma_dev_tx_queue_start,
.tx_queue_stop = qdma_dev_tx_queue_stop,
.rx_queue_count = qdma_dev_rx_queue_count,
.rx_descriptor_status = qdma_dev_rx_descriptor_status,
.tx_descriptor_status = qdma_dev_tx_descriptor_status,
.tx_done_cleanup = qdma_dev_tx_done_cleanup,
.queue_stats_mapping_set = qdma_dev_queue_stats_mapping,
.get_reg = qdma_dev_get_regs,
.stats_get = qdma_dev_stats_get,
.stats_reset = qdma_dev_stats_reset,
.xstats_get_names = qep_dev_xstats_get_names,
.xstats_get_names_by_id = qep_dev_xstats_get_names_by_id,
.xstats_get = qep_dev_xstats_get,
.xstats_get_by_id = qep_dev_xstats_get_by_id,
.xstats_reset = qep_dev_xstats_reset,
.mtu_set = qdma_dev_mtu_set,
.rxq_info_get = qep_dev_rxq_info_get,
.txq_info_get = qep_dev_txq_info_get,
.dev_supported_ptypes_get = qep_dev_supported_ptypes_get,
.reta_query = qep_dev_rss_reta_query,
.reta_update = qep_dev_rss_reta_update,
.rss_hash_conf_get = qep_dev_rss_conf_get,
.filter_ctrl = qep_filter_ctrl,
};
In addition, the DPDK driver also implements below rte_flow_ops
for RSS configuration.
const struct rte_flow_ops qep_flow_ops = {
.validate = qep_flow_validate,
.create = qep_flow_create,
.destroy = qep_flow_destroy,
.flush = qep_flow_flush,
};
Below sequence diagram depicts the application call flow to the driver callbacks and their high level operations.
Implementation details of the callback APIs is described further in
Additional interfaces are exported by the driver for QDMA configuration. These new interfaces are described in
DMA Hardware Error Monitoring¶
There are various causes for errors in QDMA IP e.g. descriptor errors, DMA engine errors, etc. If the errors are enabled by SW, QDMA logs the status of error in the respective global status registers.
DPDK driver executes a poll thread qdma_check_errors()
every 1 second to check the error status and log the type of HW error occured on the console.
DPDK Driver debug¶
DPDK driver provides APIs rte_pmd_qep_dbg_regdump()
, rte_pmd_qep_dbg_qinfo()
,
rte_pmd_qep_dbg_qdesc()
, rte_pmd_qep_dbg_stmninfo()
, rte_pmd_qep_dbg_lbusinfo()
to dump debug information.
Below debug information can be dumped using these API
- Dump QDMA registers
- Dump queue contexts for the given queue id
- Dump software information for the given queue id
- Dump the specified descriptor ring of the given queue id
- Dump STM-N status and statistics registers
- Dump LBUS status and statistics registers
User application can call these API to dump the required debug information.
dpdk-procinfo¶
Xilinx provides patch for dpdk-procinfo application to dump debug information using these APIs. This application should be run as a secondary application in a separate shell to the primary application. The patch adds/updates following option in dpdk-procinfo application.
-g: To display QDMA configuration registers
-q <queue id>: To Select queue
—qinfo: To display QDMA queue context and SW structure
–desc-dump {rx | tx | cmpt}: To dump QDMA queue descriptors
—xstats: To display extended port statistics
–stmn: To print STM-N and LBUS debug information
Sample execution command and output is given below
QDMA Registers¶
./x86_64-native-linuxapp-gcc/app/dpdk-procinfo -w 1a:00.2 -- -g
EAL: Detected 24 lcore(s) EAL: Detected 1 NUMA nodes EAL: Multi-process socket /var/run/dpdk/rte/mp_socket_5715_693a0b69e25f8 EAL: Probing VFIO support... EAL: PCI device 0000:05:00.0 on NUMA socket 0 EAL: probe driver: 8086:1533 net_e1000_igb EAL: PCI device 0000:06:00.0 on NUMA socket 0 EAL: probe driver: 1d6a:7b1 net_atlantic EAL: PCI device 0000:1a:00.2 on NUMA socket 0 EAL: probe driver: 10ee:5016 net_qep FPGA Config Registers for port_id: 0 -------- Offset Name Value(Hex) Value(Dec) [ 0] CFG_BLOCK_ID_0 0x1fd30000 533921792 [ 0x4] CFG_BUSDEV_0 0 0 [ 0x8] CFG_PCIE_MAX_PL_SZ_0 0x51 81 [ 0xc] CFG_PCIE_MAX_RDRQ_SZ_0 0x52 82 [ 0x10] CFG_SYS_ID_0 0x1234 4660 [ 0x14] CFG_MSI_EN_0 0x20202 131586 [ 0x18] CFG_PCIE_DATA_WIDTH_0 0x3 3 [ 0x1c] CFG_PCIE_CTRL_0 0x1 1 [ 0x40] CFG_AXI_USR_MAX_PL_SZ_0 0x55 85 [ 0x44] CFG_AXI_USR_MAX_RDRQ_SZ_0 0x55 85 [ 0x4c] CFG_MISC_CTRL_0 0x10009 65545 [ 0x80] CFG_SCRATCH_REG_0 0 0 [ 0x84] CFG_SCRATCH_REG_1 0 0 [ 0x88] CFG_SCRATCH_REG_2 0 0 [ 0x8c] CFG_SCRATCH_REG_3 0 0 [ 0x90] CFG_SCRATCH_REG_4 0 0 [ 0x94] CFG_SCRATCH_REG_5 0 0 [ 0x98] CFG_SCRATCH_REG_6 0 0 [ 0x9c] CFG_SCRATCH_REG_7 0 0 [ 0xf0] QDMA_RAM_SBE_MSK_A_0 0xffffff11 4294967057 [ 0xf4] QDMA_RAM_SBE_STS_A_0 0 0 [ 0xf8] QDMA_RAM_DBE_MSK_A_0 0xffffff11 4294967057 [ 0xfc] QDMA_RAM_DBE_STS_A_0 0 0 [ 0x100] GLBL2_ID_0 0x1fd70000 534183936 [ 0x104] GLBL2_PF_BL_INT_0 0x1101 4353 [ 0x108] GLBL2_PF_VF_BL_INT_0 0 0 [ 0x10c] GLBL2_PF_BL_EXT_0 0x4044 16452 [ 0x110] GLBL2_PF_VF_BL_EXT_0 0 0 [ 0x114] GLBL2_CHNL_INST_0 0x30101 196865 [ 0x118] GLBL2_CHNL_QDMA_0 0x30f0f 200463 [ 0x11c] GLBL2_CHNL_STRM_0 0x30000 196608 [ 0x120] GLBL2_QDMA_CAP_0 0x800 2048 [ 0x128] GLBL2_PASID_CAP_0 0 0 [ 0x12c] GLBL2_FUNC_RET_0 0x2 2 [ 0x130] GLBL2_SYS_ID_0 0 0 [ 0x134] GLBL2_MISC_CAP_0 0x1000000 16777216 [ 0x1b8] GLBL2_DBG_PCIE_RQ_0 0x7c50003 130351107 [ 0x1bc] GLBL2_DBG_PCIE_RQ_1 0x6024 24612 [ 0x1c0] GLBL2_DBG_AXIMM_WR_0 0x600021 6291489 [ 0x1c4] GLBL2_DBG_AXIMM_WR_1 0 0 [ 0x1c8] GLBL2_DBG_AXIMM_RD_0 0x1 1 [ 0x1cc] GLBL2_DBG_AXIMM_RD_1 0 0 [ 0x204] GLBL_RNGSZ_0 0x801 2049 [ 0x208] GLBL_RNGSZ_1 0x41 65 [ 0x20c] GLBL_RNGSZ_2 0x81 129 [ 0x210] GLBL_RNGSZ_3 0xc1 193 [ 0x214] GLBL_RNGSZ_4 0x101 257 [ 0x218] GLBL_RNGSZ_5 0x181 385 [ 0x21c] GLBL_RNGSZ_6 0x201 513 [ 0x220] GLBL_RNGSZ_7 0x301 769 [ 0x224] GLBL_RNGSZ_8 0x401 1025 [ 0x228] GLBL_RNGSZ_9 0x601 1537 [ 0x22c] GLBL_RNGSZ_10 0xc01 3073 [ 0x230] GLBL_RNGSZ_11 0x1001 4097 [ 0x234] GLBL_RNGSZ_12 0x1801 6145 [ 0x238] GLBL_RNGSZ_13 0x2001 8193 [ 0x23c] GLBL_RNGSZ_14 0x3001 12289 [ 0x240] GLBL_RNGSZ_15 0x4001 16385 [ 0x248] GLBL_ERR_STAT_0 0 0 [ 0x24c] GLBL_ERR_MASK_0 0xfff 4095 [ 0x250] GLBL_DSC_CFG_0 0x30 48 [ 0x254] GLBL_DSC_ERR_STS_0 0 0 [ 0x258] GLBL_DSC_ERR_MSK_0 0x7ff 2047 [ 0x25c] GLBL_DSC_ERR_LOG_0 0 0 [ 0x260] GLBL_DSC_ERR_LOG_1 0 0 [ 0x264] GLBL_TRQ_ERR_STS_0 0 0 [ 0x268] GLBL_TRQ_ERR_MSK_0 0xf 15 [ 0x26c] GLBL_TRQ_ERR_LOG_0 0 0 [ 0x270] GLBL_DSC_DBG_DAT_0 0x221e0000 572391424 [ 0x274] GLBL_DSC_DBG_DAT_1 0x8080 32896 [ 0x27c] GLBL_DSC_ERR_LOG2_0 0 0 [ 0x288] GLBL_INTERRUPT_CFG_0 0 0 [ 0x400] TRQ_SEL_FMAP_0 0 0 [ 0x404] TRQ_SEL_FMAP_1 0 0 [ 0x408] TRQ_SEL_FMAP_2 0x8100 33024 [ 0x40c] TRQ_SEL_FMAP_3 0 0 [ 0x804] IND_CTXT_DATA_0 0x10f5a 69466 [ 0x808] IND_CTXT_DATA_1 0xfffffffe 4294967294 [ 0x80c] IND_CTXT_DATA_2 0xffffffff 4294967295 [ 0x810] IND_CTXT_DATA_3 0xffffffff 4294967295 [ 0x814] IND_CTXT_DATA_4 0xffffffff 4294967295 [ 0x818] IND_CTXT_DATA_5 0xffffffff 4294967295 [ 0x81c] IND_CTXT_DATA_6 0xffffffff 4294967295 [ 0x820] IND_CTXT_DATA_7 0xffffffff 4294967295 [ 0x824] IND_CTXT_MASK_0 0xffffffff 4294967295 [ 0x828] IND_CTXT_MASK_1 0xffffffff 4294967295 [ 0x82c] IND_CTXT_MASK_2 0xffffffff 4294967295 [ 0x830] IND_CTXT_MASK_3 0xffffffff 4294967295 [ 0x834] IND_CTXT_MASK_4 0xffffffff 4294967295 [ 0x838] IND_CTXT_MASK_5 0xffffffff 4294967295 [ 0x83c] IND_CTXT_MASK_6 0xffffffff 4294967295 [ 0x840] IND_CTXT_MASK_7 0xffffffff 4294967295 [ 0x844] IND_CTXT_CMD_0 0x87ac 34732 [ 0xa00] C2H_TIMER_CNT_0 0x1 1 [ 0xa04] C2H_TIMER_CNT_1 0x2 2 [ 0xa08] C2H_TIMER_CNT_2 0x4 4 [ 0xa0c] C2H_TIMER_CNT_3 0x5 5 [ 0xa10] C2H_TIMER_CNT_4 0x8 8 [ 0xa14] C2H_TIMER_CNT_5 0xa 10 [ 0xa18] C2H_TIMER_CNT_6 0xf 15 [ 0xa1c] C2H_TIMER_CNT_7 0x14 20 [ 0xa20] C2H_TIMER_CNT_8 0x19 25 [ 0xa24] C2H_TIMER_CNT_9 0x1e 30 [ 0xa28] C2H_TIMER_CNT_10 0x32 50 [ 0xa2c] C2H_TIMER_CNT_11 0x4b 75 [ 0xa30] C2H_TIMER_CNT_12 0x64 100 [ 0xa34] C2H_TIMER_CNT_13 0x7d 125 [ 0xa38] C2H_TIMER_CNT_14 0x96 150 [ 0xa3c] C2H_TIMER_CNT_15 0xc8 200 [ 0xa40] C2H_CNT_THRESH_0 0x40 64 [ 0xa44] C2H_CNT_THRESH_1 0x2 2 [ 0xa48] C2H_CNT_THRESH_2 0x4 4 [ 0xa4c] C2H_CNT_THRESH_3 0x8 8 [ 0xa50] C2H_CNT_THRESH_4 0x10 16 [ 0xa54] C2H_CNT_THRESH_5 0x18 24 [ 0xa58] C2H_CNT_THRESH_6 0x20 32 [ 0xa5c] C2H_CNT_THRESH_7 0x30 48 [ 0xa60] C2H_CNT_THRESH_8 0x50 80 [ 0xa64] C2H_CNT_THRESH_9 0x60 96 [ 0xa68] C2H_CNT_THRESH_10 0x70 112 [ 0xa6c] C2H_CNT_THRESH_11 0x80 128 [ 0xa70] C2H_CNT_THRESH_12 0x90 144 [ 0xa74] C2H_CNT_THRESH_13 0xa0 160 [ 0xa78] C2H_CNT_THRESH_14 0xb0 176 [ 0xa7c] C2H_CNT_THRESH_15 0xc0 192 [ 0xa88] C2H_STAT_S_AXIS_C2H_ACCEPTED_0 0x12 18 [ 0xa8c] C2H_STAT_S_AXIS_CMPT_ACCEPTED_0 0x12 18 [ 0xa90] C2H_STAT_DESC_RSP_PKT_ACCEPTED_0 0x12 18 [ 0xa94] C2H_STAT_AXIS_PKG_CMP_0 0x12 18 [ 0xa98] C2H_STAT_DESC_RSP_ACCEPTED_0 0x12 18 [ 0xa9c] C2H_STAT_DESC_RSP_CMP_0 0x12 18 [ 0xaa0] C2H_STAT_WRQ_OUT_0 0x15 21 [ 0xaa4] C2H_STAT_WPL_REN_ACCEPTED_0 0x24 36 [ 0xaa8] C2H_STAT_TOTAL_WRQ_LEN_0 0x900 2304 [ 0xaac] C2H_STAT_TOTAL_WPL_LEN_0 0x900 2304 [ 0xab0] C2H_BUF_SZ_0 0x1000 4096 [ 0xab4] C2H_BUF_SZ_1 0x100 256 [ 0xab8] C2H_BUF_SZ_2 0x200 512 [ 0xabc] C2H_BUF_SZ_3 0x400 1024 [ 0xac0] C2H_BUF_SZ_4 0x800 2048 [ 0xac4] C2H_BUF_SZ_5 0xf80 3968 [ 0xac8] C2H_BUF_SZ_6 0x1000 4096 [ 0xacc] C2H_BUF_SZ_7 0x1000 4096 [ 0xad0] C2H_BUF_SZ_8 0x1000 4096 [ 0xad4] C2H_BUF_SZ_9 0x1000 4096 [ 0xad8] C2H_BUF_SZ_10 0x1000 4096 [ 0xadc] C2H_BUF_SZ_11 0x1000 4096 [ 0xae0] C2H_BUF_SZ_12 0x1000 4096 [ 0xae4] C2H_BUF_SZ_13 0x2000 8192 [ 0xae8] C2H_BUF_SZ_14 0x233a 9018 [ 0xaec] C2H_BUF_SZ_15 0x4000 16384 [ 0xaf0] C2H_ERR_STAT_0 0 0 [ 0xaf4] C2H_ERR_MASK_0 0xfedb 65243 [ 0xaf8] C2H_FATAL_ERR_STAT_0 0 0 [ 0xafc] C2H_FATAL_ERR_MASK_0 0x7df1b 515867 [ 0xb00] C2H_FATAL_ERR_ENABLE_0 0 0 [ 0xb04] GLBL_ERR_INT_0 0x1000001 16777217 [ 0xb08] C2H_PFCH_CFG_0 0xc201100 203428096 [ 0xb0c] C2H_INT_TIMER_TICK_0 0x19 25 [ 0xb10] C2H_STAT_DESC_RSP_DROP_ACCEPTED_0 0 0 [ 0xb14] C2H_STAT_DESC_RSP_ERR_ACCEPTED_0 0 0 [ 0xb18] C2H_STAT_DESC_REQ_0 0x12 18 [ 0xb1c] C2H_STAT_DEBUG_DMA_ENG_0 0 0 [ 0xb20] C2H_STAT_DEBUG_DMA_ENG_1 0x82409012 2185269266 [ 0xb24] C2H_STAT_DEBUG_DMA_ENG_2 0xc1204812 3240118290 [ 0xb28] C2H_STAT_DEBUG_DMA_ENG_3 0x105415 1070101 [ 0xb2c] C2H_DBG_PFCH_ERR_CTXT_0 0 0 [ 0xb30] C2H_FIRST_ERR_QID_0 0 0 [ 0xb34] STAT_NUM_CMPT_IN_0 0x12 18 [ 0xb38] STAT_NUM_CMPT_OUT_0 0x12 18 [ 0xb3c] STAT_NUM_CMPT_DRP_0 0 0 [ 0xb40] STAT_NUM_STAT_DESC_OUT_0 0x12 18 [ 0xb44] STAT_NUM_DSC_CRDT_SENT_0 0 0 [ 0xb48] STAT_NUM_FCH_DSC_RCVD_0 0 0 [ 0xb4c] STAT_NUM_BYP_DSC_RCVD_0 0x12 18 [ 0xb50] C2H_CMPT_COAL_CFG_0 0x80064014 2147893268 [ 0xb54] C2H_INTR_H2C_REQ_0 0 0 [ 0xb58] C2H_INTR_C2H_MM_REQ_0 0 0 [ 0xb5c] C2H_INTR_ERR_INT_REQ_0 0 0 [ 0xb60] C2H_INTR_C2H_ST_REQ_0 0 0 [ 0xb64] C2H_INTR_H2C_ERR_MM_MSIX_ACK_0 0 0 [ 0xb68] C2H_INTR_H2C_ERR_MM_MSIX_FAIL_0 0 0 [ 0xb6c] C2H_INTR_H2C_ERR_MM_NO_MSIX_0 0 0 [ 0xb70] C2H_INTR_H2C_ERR_MM_CTXT_INVAL_0 0 0 [ 0xb74] C2H_INTR_C2H_ST_MSIX_ACK_0 0 0 [ 0xb78] C2H_INTR_C2H_ST_MSIX_FAIL_0 0 0 [ 0xb7c] C2H_INTR_C2H_ST_NO_MSIX_0 0 0 [ 0xb80] C2H_INTR_C2H_ST_CTXT_INVAL_0 0 0 [ 0xb84] C2H_STAT_WR_CMP_0 0x12 18 [ 0xb88] C2H_STAT_DEBUG_DMA_ENG_4_0 0x41204800 1092634624 [ 0xb8c] C2H_STAT_DEBUG_DMA_ENG_5_0 0 0 [ 0xb90] C2H_DBG_PFCH_QID_0 0 0 [ 0xb94] C2H_DBG_PFCH_0 0 0 [ 0xb98] C2H_INT_DEBUG_0 0 0 [ 0xb9c] C2H_STAT_IMM_ACCEPTED_0 0 0 [ 0xba0] C2H_STAT_MARKER_ACCEPTED_0 0 0 [ 0xba4] C2H_STAT_DISABLE_CMP_ACCEPTED_0 0 0 [ 0xba8] C2H_C2H_PAYLOAD_FIFO_CRDT_CNT_0 0 0 [ 0xbac] C2H_INTR_DYN_REQ_0 0 0 [ 0xbb0] C2H_INTR_DYN_MSIX_0 0 0 [ 0xbb4] C2H_DROP_LEN_MISMATCH_0 0 0 [ 0xbb8] C2H_DROP_DESC_RSP_LEN_0 0 0 [ 0xbbc] C2H_DROP_QID_FIFO_LEN_0 0 0 [ 0xbc0] C2H_DROP_PAYLOAD_CNT_0 0 0 [ 0xbc4] QDMA_C2H_CMPT_FORMAT_0 0x20001 131073 [ 0xbc8] QDMA_C2H_CMPT_FORMAT_1 0 0 [ 0xbcc] QDMA_C2H_CMPT_FORMAT_2 0 0 [ 0xbd0] QDMA_C2H_CMPT_FORMAT_3 0 0 [ 0xbd4] QDMA_C2H_CMPT_FORMAT_4 0 0 [ 0xbd8] QDMA_C2H_CMPT_FORMAT_5 0 0 [ 0xbdc] QDMA_C2H_CMPT_FORMAT_6 0 0 [ 0xbe0] C2H_PFCH_CACHE_DEPTH_0 0x10 16 [ 0xbe4] C2H_CMPT_COAL_BUF_DEPTH_0 0x20 32 [ 0xbe8] C2H_PFCH_CRDT_0 0 0 [ 0xe00] H2C_ERR_STAT_0 0 0 [ 0xe04] H2C_ERR_MASK_0 0x1f 31 [ 0xe08] H2C_FIRST_ERR_QID_0 0 0 [ 0xe0c] H2C_DBG_REG_0 0x100010 1048592 [ 0xe10] H2C_DBG_REG_1 0x100020 1048608 [ 0xe14] H2C_DBG_REG_2 0 0 [ 0xe18] H2C_DBG_REG_3 0x44008025 1140883493 [ 0xe1c] H2C_DBG_REG_4 0xa16a2040 2708086848 [ 0xe20] H2C_FATAL_ERR_EN_0 0 0 [ 0xe24] H2C_REQ_THROT_0 0xc14000 12664832 [ 0xe28] H2C_ALN_DBG_REG0_0 0x10 16 [ 0x1004] C2H_MM_CONTROL_0 0x1 1 [ 0x1008] C2H_MM_CONTROL_1 0x1 1 [ 0x100c] C2H_MM_CONTROL_2 0x1 1 [ 0x1040] C2H_MM_STATUS_0 0x1 1 [ 0x1044] C2H_MM_STATUS_1 0x1 1 [ 0x1048] C2H_MM_CMPL_DSC_CNT_0 0 0 [ 0x1054] C2H_MM_ERR_CODE_EN_MASK_0 0 0 [ 0x1058] C2H_MM_ERR_CODE_0 0 0 [ 0x105c] C2H_MM_ERR_INFO_0 0 0 [ 0x10c0] C2H_MM_PERF_MON_CTRL_0 0 0 [ 0x10c4] C2H_MM_PERF_MON_CY_CNT_0 0 0 [ 0x10c8] C2H_MM_PERF_MON_CY_CNT_1 0 0 [ 0x10cc] C2H_MM_PERF_MON_DATA_CNT_0 0 0 [ 0x10d0] C2H_MM_PERF_MON_DATA_CNT_1 0 0 [ 0x10e8] C2H_MM_DBG_INFO_0 0x10002 65538 [ 0x10ec] C2H_MM_DBG_INFO_1 0 0 [ 0x1204] H2C_MM_CONTROL_0 0x1 1 [ 0x1208] H2C_MM_CONTROL_1 0x1 1 [ 0x120c] H2C_MM_CONTROL_2 0x1 1 [ 0x1240] H2C_MM_STATUS_0 0x1 1 [ 0x1248] H2C_MM_CMPL_DSC_CNT_0 0 0 [ 0x1254] H2C_MM_ERR_CODE_EN_MASK_0 0 0 [ 0x1258] H2C_MM_ERR_CODE_0 0 0 [ 0x125c] H2C_MM_ERR_INFO_0 0 0 [ 0x12c0] H2C_MM_PERF_MON_CTRL_0 0 0 [ 0x12c4] H2C_MM_PERF_MON_CY_CNT_0 0 0 [ 0x12c8] H2C_MM_PERF_MON_CY_CNT_1 0 0 [ 0x12cc] H2C_MM_PERF_MON_DATA_CNT_0 0 0 [ 0x12d0] H2C_MM_PERF_MON_DATA_CNT_1 0 0 [ 0x12e8] H2C_MM_DBG_INFO_0 0x10002 65538 [ 0x12ec] H2C_MM_REQ_THROT_0 0x8000 32768
QDMA queue context and SW structure¶
./x86_64-native-linuxapp-gcc/app/dpdk-procinfo -w 1a:00.2 -- --qinfo -q 15
EAL: Detected 24 lcore(s) EAL: Detected 1 NUMA nodes EAL: Multi-process socket /var/run/dpdk/rte/mp_socket_5847_6947546087f38 EAL: Probing VFIO support... EAL: PCI device 0000:05:00.0 on NUMA socket 0 EAL: probe driver: 8086:1533 net_e1000_igb EAL: PCI device 0000:06:00.0 on NUMA socket 0 EAL: probe driver: 1d6a:7b1 net_atlantic EAL: PCI device 0000:1a:00.2 on NUMA socket 0 EAL: probe driver: 10ee:5016 net_qep ***** C2H Queue Contexts on port_id: 0 for queue_id: 15 ***** ---------------------------------------------------------------------------- SW Context ---------------------------------------------------------------------------- PIDX 0x7ff 2047 IRQ Arm 0 0 Function Id 0x2 2 Queue Enable 0x1 1 Fetch Credit Enable 0x1 1 Write back/Intr Check 0 0 Write back/Intr Interval 0 0 Address Translation 0 0 Fetch Max 0 0 Ring Size 0 0 Descriptor Size 0 0 Bypass Enable 0x1 1 MM Channel 0 0 Writeback Enable 0x1 1 Interrupt Enable 0 0 Port Id 0 0 Interrupt No Last 0 0 Error 0 0 Writeback Error Sent 0 0 IRQ Request 0 0 Marker Disable 0 0 Is Memory Mapped 0 0 Descriptor Ring Base Addr (Low) 0x9d3b7000 2637918208 Descriptor Ring Base Addr (High) 0xf 15 Interrupt Vector/Ring Index 0 0 Interrupt Aggregation 0 0 ---------------------------------------------------------------------------- HW Context ---------------------------------------------------------------------------- CIDX 0x80 128 Credits Consumed 0x80 128 Descriptors Pending 0x1 1 Queue Invalid No Desc Pending 0x1 1 Eviction Pending 0 0 Fetch Pending 0 0 ---------------------------------------------------------------------------- Credit Context ---------------------------------------------------------------------------- Credit 0x80 128 ***********RX Queue struct********** wb_pidx :0 wb_cidx :0 rx_tail (ST) :0 c2h_pidx :7ff rx_cmpt_cidx :0 cmpt_desc_len :8 rx_buff_size :1000 nb_rx_desc :801 nb_rx_cmpt_desc :1001 ep_addr :0 st_mode :1 rx_deferred_start :0 en_prefetch :0 en_bypass :1 dump_immediate_data :0 en_bypass_prefetch :1 dis_overflow_check :0 bypass_desc_sz :0 ringszidx :0 cmpt_ringszidx :b buffszidx :0 threshidx :0 timeridx :3 triggermode :4 ***** H2C Queue Contexts on port_id: 0 for queue_id: 15 ***** ---------------------------------------------------------------------------- SW Context ---------------------------------------------------------------------------- PIDX 0 0 IRQ Arm 0 0 Function Id 0x2 2 Queue Enable 0x1 1 Fetch Credit Enable 0x1 1 Write back/Intr Check 0x1 1 Write back/Intr Interval 0x1 1 Address Translation 0 0 Fetch Max 0 0 Ring Size 0 0 Descriptor Size 0x1 1 Bypass Enable 0x1 1 MM Channel 0 0 Writeback Enable 0x1 1 Interrupt Enable 0 0 Port Id 0 0 Interrupt No Last 0 0 Error 0 0 Writeback Error Sent 0 0 IRQ Request 0 0 Marker Disable 0 0 Is Memory Mapped 0 0 Descriptor Ring Base Addr (Low) 0x9d4ce000 2639060992 Descriptor Ring Base Addr (High) 0xf 15 Interrupt Vector/Ring Index 0 0 Interrupt Aggregation 0 0 ---------------------------------------------------------------------------- HW Context ---------------------------------------------------------------------------- CIDX 0 0 Credits Consumed 0 0 Descriptors Pending 0 0 Queue Invalid No Desc Pending 0x1 1 Eviction Pending 0 0 Fetch Pending 0 0 ---------------------------------------------------------------------------- Credit Context ---------------------------------------------------------------------------- Credit 0 0 ***********TX Queue struct************ wb_pidx :0 wb_cidx :0 h2c_pidx :0 tx_fl_tail :0 tx_desc_pend :0 nb_tx_desc :801 st_mode :1 tx_deferred_start :0 en_bypass :1 bypass_desc_sz :0 func_id :2 port_id :0 ringszidx :0 ep_addr :0
QDMA queue TX/RX descriptors**¶
./x86_64-native-linuxapp-gcc/app/dpdk-procinfo -w 1a:00.2 -- --desc-dump tx -q 2
EAL: Detected 24 lcore(s) EAL: Detected 1 NUMA nodes EAL: Multi-process socket /var/run/dpdk/rte/mp_socket_6012_694ddae74784e EAL: Probing VFIO support... EAL: PCI device 0000:05:00.0 on NUMA socket 0 EAL: probe driver: 8086:1533 net_e1000_igb EAL: PCI device 0000:06:00.0 on NUMA socket 0 EAL: probe driver: 1d6a:7b1 net_atlantic EAL: PCI device 0000:1a:00.2 on NUMA socket 0 EAL: probe driver: 10ee:5016 net_qep ====== H2C ring descriptors===== Descriptor ID 0 at [0x15d577000], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 1 at [0x15d577010], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 2 at [0x15d577020], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 3 at [0x15d577030], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 4 at [0x15d577040], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 5 at [0x15d577050], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 6 at [0x15d577060], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 7 at [0x15d577070], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 8 at [0x15d577080], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 9 at [0x15d577090], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 10 at [0x15d5770a0], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 11 at [0x15d5770b0], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 12 at [0x15d5770c0], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 13 at [0x15d5770d0], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 14 at [0x15d5770e0], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 15 at [0x15d5770f0], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 16 at [0x15d577100], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 17 at [0x15d577110], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 18 at [0x15d577120], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 19 at [0x15d577130], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 20 at [0x15d577140], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 21 at [0x15d577150], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 22 at [0x15d577160], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 23 at [0x15d577170], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 24 at [0x15d577180], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 25 at [0x15d577190], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 26 at [0x15d5771a0], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 27 at [0x15d5771b0], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 28 at [0x15d5771c0], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 29 at [0x15d5771d0], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 30 at [0x15d5771e0], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 31 at [0x15d5771f0], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ Descriptor ID 32 at [0x15d577200], len=16 00000000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................
Extended statistics (CMAC & STM-N)¶
./x86_64-native-linuxapp-gcc/app/dpdk-procinfo -w 1a:00.2 -- --xstats
EAL: Detected 24 lcore(s) EAL: Detected 1 NUMA nodes EAL: Multi-process socket /var/run/dpdk/rte/mp_socket_6100_69555ec5db338 EAL: Probing VFIO support... EAL: PCI device 0000:05:00.0 on NUMA socket 0 EAL: probe driver: 8086:1533 net_e1000_igb EAL: PCI device 0000:06:00.0 on NUMA socket 0 EAL: probe driver: 1d6a:7b1 net_atlantic EAL: PCI device 0000:1a:00.2 on NUMA socket 0 EAL: probe driver: 10ee:5016 net_qep ###### NIC extended statistics for port 0 ######### #################################################### rx_good_packets: 0 tx_good_packets: 0 rx_good_bytes: 0 tx_good_bytes: 0 rx_missed_errors: 0 rx_errors: 0 tx_errors: 0 rx_mbuf_allocation_errors: 0 rx_q0packets: 0 rx_q0bytes: 0 rx_q0errors: 0 rx_q1packets: 0 rx_q1bytes: 0 rx_q1errors: 0 rx_q2packets: 0 rx_q2bytes: 0 rx_q2errors: 0 rx_q3packets: 0 rx_q3bytes: 0 rx_q3errors: 0 rx_q4packets: 0 rx_q4bytes: 0 rx_q4errors: 0 rx_q5packets: 0 rx_q5bytes: 0 rx_q5errors: 0 rx_q6packets: 0 rx_q6bytes: 0 rx_q6errors: 0 rx_q7packets: 0 rx_q7bytes: 0 rx_q7errors: 0 rx_q8packets: 0 rx_q8bytes: 0 rx_q8errors: 0 rx_q9packets: 0 rx_q9bytes: 0 rx_q9errors: 0 rx_q10packets: 0 rx_q10bytes: 0 rx_q10errors: 0 rx_q11packets: 0 rx_q11bytes: 0 rx_q11errors: 0 rx_q12packets: 0 rx_q12bytes: 0 rx_q12errors: 0 rx_q13packets: 0 rx_q13bytes: 0 rx_q13errors: 0 rx_q14packets: 0 rx_q14bytes: 0 rx_q14errors: 0 rx_q15packets: 0 rx_q15bytes: 0 rx_q15errors: 0 tx_q0packets: 0 tx_q0bytes: 0 tx_q1packets: 0 tx_q1bytes: 0 tx_q2packets: 0 tx_q2bytes: 0 tx_q3packets: 0 tx_q3bytes: 0 tx_q4packets: 0 tx_q4bytes: 0 tx_q5packets: 0 tx_q5bytes: 0 tx_q6packets: 0 tx_q6bytes: 0 tx_q7packets: 0 tx_q7bytes: 0 tx_q8packets: 0 tx_q8bytes: 0 tx_q9packets: 0 tx_q9bytes: 0 tx_q10packets: 0 tx_q10bytes: 0 tx_q11packets: 0 tx_q11bytes: 0 tx_q12packets: 0 tx_q12bytes: 0 tx_q13packets: 0 tx_q13bytes: 0 tx_q14packets: 0 tx_q14bytes: 0 tx_q15packets: 0 tx_q15bytes: 0 rx_mac_packets: 0 rx_good_pkts: 0 rx_mac_bytes: 0 rx_good_bytes: 0 rx_hist_less_64_pkts: 0 rx_hist_64_pkts: 0 rx_hist_65_127_pkts: 0 rx_hist_128_255_pkts: 0 rx_hist_256_511_pkts: 0 rx_hist_512_1023_pkts: 0 rx_hist_1024_1518_pkts: 0 rx_hist_1519_1522_pkts: 0 rx_hist_1523_1548_pkts: 0 rx_hist_1549_2047_pkts: 0 rx_hist_2048_4095_pkts: 0 rx_hist_4096_8191_pkts: 0 rx_hist_8192_9215_pkts: 0 rx_hist_greater_eq_9216_pkts: 0 rx_unicast_pkts: 0 rx_multicast_pkts: 0 rx_broadcast_pkts: 0 rx_pause_pkts: 0 rx_vlan_tagged_pkts: 0 rx_priority_pause_pkts: 0 rx_undersized_pkts: 0 rx_frag_pkts: 0 rx_oversized_pkts: 0 rx_too_long_pkts: 0 rx_jabber_pkts: 0 rx_bad_fcs_pkts: 0 rx_bad_fcs_pkts_64b_to_max: 0 rx_stomped_fcs_pkts: 0 rx_bad_code_pkts: 0 rx_range_error_pkts: 0 rx_truncated_pkts: 0 tx_mac_bytes: 0 tx_good_bytes: 0 tx_mac_packets: 0 tx_good_pkts: 0 tx_hist_less_64_pkts: 0 tx_hist_64_pkts: 0 tx_hist_65_127_pkts: 0 tx_hist_128_255_pkts: 0 tx_hist_256_511_pkts: 0 tx_hist_512_1023_pkts: 0 tx_hist_1024_1518_pkts: 0 tx_hist_1519_1522_pkts: 0 tx_hist_1523_1548_pkts: 0 tx_hist_1549_2047_pkts: 0 tx_hist_2048_4095_pkts: 0 tx_hist_4096_8191_pkts: 0 tx_hist_8192_9215_pkts: 0 tx_hist_greater_eq_9216_pkts: 0 tx_unicast_pkts: 0 tx_multicast_pkts: 0 tx_broadcast_pkts: 0 tx_pause_pkts: 0 tx_vlan_tagged_pkts: 0 tx_priority_pause_pkts: 0 tx_bad_fcs_pkts: 0 tx_frame_error_pkts: 0 c2h_cmpt: 1 qdma_c2h_sts: 1 h2c_meta: 1 c2h_dsc_sts: 0 h2c_dsc_sts: 1 c2h_crdt: 1 h2c_crdt: 0 c2h_byp_out: 0 h2c_byp_out: 1 dsc_sts_c2h_min_avl: 2047 dsc_sts_c2h_max_avl: 2047 dsc_sts_h2c_min_avl: 0 dsc_sts_h2c_min_avl: 5 cycle_cnt: 4977456152320 s_axis_pkt_in_cnt: 0 s_axis_pkt_accept_cnt: 0 s_axis_byte_accept_cnt: 0 s_axis_pkt_drop_cnt: 0 s_axis_byte_drop_cnt: 0 qdma_pkt_accept_cnt: 0 qdma_byte_accept_cnt: 0 qdma_pkt_drop_cnt: 0 qdma_byte_drop_cnt: 0 s_axis_active: 0 s_axis_idle: 4977456152320 s_axis_pause: 0 qdma_axis_c2h_active: 0 qdma_axis_c2h_idle: 4977456152320 qdma_axis_c2h_pause: 0 qdma_axis_c2h_cmpt_active: 0 qdma_axis_c2h_cmpt_idle: 4977456152320 qdma_axis_c2h_cmpt_pause: 0 qdma_axis_c2h_dmawr_cmp_cnt: 0 c2h_cmpt_fifo_avg_cnt: 0 qdma_c2h_sts_fifo_avg_cnt: 0 m_axis_pkt_cnt: 0 m_axis_byte_cnt: 0 m_axis_active: 0 m_axis_idle: 4977456152320 m_axis_pause: 0 h2c_meta_fifo_avg_cnt: 0 dsc_sts_c2h_cnt: 34 dsc_sts_h2c_cnt: 34 dsc_sts_c2h_avl_cnt: 33263 dsc_sts_h2c_avl_cnt: 0 dsc_sts_c2h_fifo_avg_cnt: 459 dsc_sts_h2c_fifo_avg_cnt: 459 crdt_in_c2h_vld_cnt: 17 crdt_in_h2c_vld_cnt: 0 crdt_in_c2h_cnt: 2176 crdt_in_h2c_cnt: 0 byp_out_c2h_cnt: 2176 byp_out_h2c_cnt: 0 c2h_crdt_fifo_avg_cnt: 68 h2c_crdt_fifo_avg_cnt: 0 c2h_byp_out_fifo_avg_cnt: 8704 ####################################################
STM-N and LBUS status information¶
./x86_64-native-linuxapp-gcc/app/dpdk-procinfo -w 1a:00.2 -- --stmn
EAL: Detected 24 lcore(s) EAL: Detected 1 NUMA nodes EAL: Multi-process socket /var/run/dpdk/rte/mp_socket_6113_6956910070a62 EAL: Probing VFIO support... EAL: PCI device 0000:05:00.0 on NUMA socket 0 EAL: probe driver: 8086:1533 net_e1000_igb EAL: PCI device 0000:06:00.0 on NUMA socket 0 EAL: probe driver: 1d6a:7b1 net_atlantic EAL: PCI device 0000:1a:00.2 on NUMA socket 0 EAL: probe driver: 10ee:5016 net_qep STMN version Minor:2 Major:0 BlcokID:0 ***********Status*********** Last Drop Axis response : drop_code:0 num_desc:0 num_pkt:0 accept:0 sim_byp:0 qid:0 reg_val:0 First Drop Axis response : drop_code:0 num_desc:0 num_pkt:0 accept:0 sim_byp:0 qid:0 reg_val:0 Dropping Queue Type : accept_sim_byp:0 accept_not_byp:0 drop_cache_byp:0 drop_sim_byp:0 drop_not_byp:0 Dropping Queue cause : drop_sim_byp_len:0 drop_sim_byp_avl:0 drop_sim_byp_init:0 drop_qid_err:0 drop_qid_not_st:0 drop_qid_not_en:0 C2h Flags: last:0 cmp:0 not_last:0 drop:0 max_qid:0 ***********Error*********** s_axis_err 0x0 m_axis_err 0x0 dsc_sts_err 0x0 crdt_bypout_err 0x0 c2h_dsc_sts_err 0x0 c2h_dsc_str_wr_err 0x0 c2h_dsc_str_rd_err 0x0 h2c_dsc_sts_err 0x0 h2c_dsc_str_wr_err 0x0 h2c_dsc_str_rd_err 0x0 C2H Desc Err : err:0 qinv:0 irq_arm:0 mm:0 byp:0 qen:0 port_id:0 avl:0 qid:0 H2C Desc Err : err:0 qinv:0 irq_arm:0 mm:0 byp:0 qen:0 port_id:0 avl:0 qid:0 C2H Desc Byp Err : error:0 st_mm:0 mrkr_rsp:0 dsc_sz:0 port_id:0 func:0 cidx:0 qid:0 H2C Desc Byp Err : error:0 st_mm:0 mrkr_rsp:0 dsc_sz:0 port_id:0 func:0 cidx:0 qid:0 RX(LBUS_to_AXIS) Info Config: Pass_Err=0 Pass_Truncate=0 Error : Ctl_FIFO_Full=0 Ctl_FIFO_Empty=0 Data_FIFO_Full=0 Data_FIFO_Empty=0 Packet Drop Indication : FIFO_full=0 lbus_err=0 Invalid_bus=0 Status : Module_In_Reset= 0 Data_FIFO_in_reset=0 Control_FIFO_in_Reset=0 Data_FIFO_Full=0 axis_idle=0 lbus_idle=0 Packet Drop Cause : Backpressure=0 Cmac Err=0 Statistics : axis_out=481789737 axis_drop=0 lbus_drop=0 TX(AXIS_to_LBUS) Info Config : Padd_Enable=0 Error : Ctl_FIFO_Full=0 Ctl_FIFO_Empty=0 Data_FIFO_Full=0 Data_FIFO_Empty=0 Error : Lbus_overflow =0 lbus_underflow=0 Status : Module_In_Reset= 0 Data_FIFO_in_reset=0 Control_FIFO_in_Reset=0 Data_FIFO_Full=0 axis_idle=0 lbus_idle=0