Enhance the PMD to support retrieving trace information like Rx/Tx burst selection etc.
Signed-off-by: Haiyue Wang <haiyue.w...@intel.com> --- lib/librte_ethdev/rte_ethdev.c | 18 ++++++++++++++++++ lib/librte_ethdev/rte_ethdev.h | 9 +++++++++ lib/librte_ethdev/rte_ethdev_core.h | 4 ++++ 3 files changed, 31 insertions(+) diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index 17d183e..6098fad 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -4083,6 +4083,24 @@ rte_eth_tx_queue_info_get(uint16_t port_id, uint16_t queue_id, } int +rte_eth_trace_info_get(uint16_t port_id, uint16_t queue_id, + enum rte_eth_trace type, char *buf, int sz) +{ + struct rte_eth_dev *dev; + + RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); + + if (buf == NULL) + return -EINVAL; + + dev = &rte_eth_devices[port_id]; + + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->trace_info_get, -ENOTSUP); + + return dev->dev_ops->trace_info_get(dev, queue_id, type, buf, sz); +} + +int rte_eth_dev_set_mc_addr_list(uint16_t port_id, struct rte_ether_addr *mc_addr_set, uint32_t nb_mc_addr) diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index dc6596b..9405157 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -404,6 +404,11 @@ struct rte_eth_rxmode { uint64_t offloads; }; +enum rte_eth_trace { + ETH_TRACE_RX_BURST, + ETH_TRACE_TX_BURST, +}; + /** * VLAN types to indicate if it is for single VLAN, inner VLAN or outer VLAN. * Note that single VLAN is treated the same as inner VLAN. @@ -3556,6 +3561,10 @@ int rte_eth_rx_queue_info_get(uint16_t port_id, uint16_t queue_id, int rte_eth_tx_queue_info_get(uint16_t port_id, uint16_t queue_id, struct rte_eth_txq_info *qinfo); +int +rte_eth_trace_info_get(uint16_t port_id, uint16_t queue_id, + enum rte_eth_trace type, char *buf, int sz); + /** * Retrieve device registers and register attributes (number of registers and * register size) diff --git a/lib/librte_ethdev/rte_ethdev_core.h b/lib/librte_ethdev/rte_ethdev_core.h index 2922d5b..366bf5b 100644 --- a/lib/librte_ethdev/rte_ethdev_core.h +++ b/lib/librte_ethdev/rte_ethdev_core.h @@ -170,6 +170,9 @@ typedef void (*eth_rxq_info_get_t)(struct rte_eth_dev *dev, typedef void (*eth_txq_info_get_t)(struct rte_eth_dev *dev, uint16_t tx_queue_id, struct rte_eth_txq_info *qinfo); +typedef int (*eth_trace_info_get_t)(struct rte_eth_dev *dev, + uint16_t queue_id, enum rte_eth_trace type, char *buf, int sz); + typedef int (*mtu_set_t)(struct rte_eth_dev *dev, uint16_t mtu); /**< @internal Set MTU. */ @@ -418,6 +421,7 @@ struct eth_dev_ops { eth_dev_infos_get_t dev_infos_get; /**< Get device info. */ eth_rxq_info_get_t rxq_info_get; /**< retrieve RX queue information. */ eth_txq_info_get_t txq_info_get; /**< retrieve TX queue information. */ + eth_trace_info_get_t trace_info_get; /**< Get trace. */ eth_fw_version_get_t fw_version_get; /**< Get firmware version. */ eth_dev_supported_ptypes_get_t dev_supported_ptypes_get; /**< Get packet types supported and identified by device. */ -- 2.7.4