#pragma once #include #include /* Mr pdump */ /* Used for the multi-process communication */ #define MR_PDUMP_MP "mr_pdump" #define MR_PDUMP_MEMPOOL_NUM 16 #define MR_PDUMP_RING_NUM MR_PDUMP_MEMPOOL_NUM #define MR_PDUMP_SHMDEV_MEMPOOL_NAME "pdump_shmdev_mempool" #define MR_PDUMP_PHYDEV_MEMPOOL_NAME "pdump_phydev_mempool" #define MR_PDUMP_MBUFS_PER_POOL 65535 #define MR_PDUMP_POOL_CACHE_SIZE 250 #define MR_PDUMP_RX_RING "mr_pdump_rx_ring_%d" #define MR_PDUMP_TX_RING "mr_pdump_tx_ring_%d" #define MR_PDUMP_RING_NAME_SIZE 256 #define MR_PDUMP_RING_SIZE 16384 enum { MR_PDUMP_SUCCESS = 0, MR_PDUMP_ERR_FOR_MESSAGE_INVALID, MR_PDUMP_ERR_FOR_PORT_INVALID, MR_PDUMP_ERR_FOR_MEMPOOL_CREATE, MR_PDUMP_ERR_FOR_RX_RING_CREATE, MR_PDUMP_ERR_FOR_TX_RING_CREATE, MR_PDUMP_ERR_FOR_RX_RING_FREE, MR_PDUMP_ERR_FOR_TX_RING_FREE, MR_PDUMP_ERR_FOR_RX_ENABLE, MR_PDUMP_ERR_FOR_TX_ENABLE, MR_PDUMP_ERR_FOR_RX_DISABLE, MR_PDUMP_ERR_FOR_TX_DISABLE, MR_PDUMP_ERR_FOR_MEMPOOL_FREE, MR_PDUMP_ERR_FOR_PCAPNG_CREATE, MR_PDUMP_ERR_FOR_OP_INVALID, }; enum mr_pdump_operation { DISABLE = 1, ENABLE = 2, }; /* Request struct */ struct mr_pdump_request { uint16_t op; uint16_t queue; uint16_t mbuf_data_size; uint32_t total_num_mbufs; uint32_t flags; uint32_t ring_size; uint32_t snaplen; uint32_t offset; char dev_symbol[MR_SYMBOL_MAX]; struct rte_bpf_prm * prm; }; /* Response struct */ struct mr_pdump_response { uint16_t res_op; int32_t err_value; port_id_t port_id; enum mr_dev_driver drv_type; struct rte_ether_addr eth_addr; struct rte_ring * rx_ring; struct rte_ring * tx_ring; struct rte_mempool * mp; }; extern void mr_pdump_rx(port_id_t port_id, queue_id_t qid, struct rte_mbuf ** mbufs, unsigned int nr_pkts); extern void mr_pdump_tx(port_id_t port_id, queue_id_t qid, struct rte_mbuf ** mbufs, unsigned int nr_pkts);