From: Jiawen Wu Date: Thu, 21 Oct 2021 09:50:02 +0000 (+0800) Subject: net/ngbe: support Rx/Tx burst mode info X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=d148a87e69c58dceace141cca2dcb172c10b5900;p=dpdk.git net/ngbe: support Rx/Tx burst mode info Support to get Rx/Tx burst mode info. Signed-off-by: Jiawen Wu --- diff --git a/doc/guides/nics/features/ngbe.ini b/doc/guides/nics/features/ngbe.ini index d23e7f084f..70bf91e6a1 100644 --- a/doc/guides/nics/features/ngbe.ini +++ b/doc/guides/nics/features/ngbe.ini @@ -8,6 +8,7 @@ Speed capabilities = Y Link status = Y Link status event = Y Queue start/stop = Y +Burst mode info = Y Scattered Rx = Y TSO = Y L3 checksum offload = Y diff --git a/drivers/net/ngbe/ngbe_ethdev.c b/drivers/net/ngbe/ngbe_ethdev.c index 6043bfd431..b12851d309 100644 --- a/drivers/net/ngbe/ngbe_ethdev.c +++ b/drivers/net/ngbe/ngbe_ethdev.c @@ -1196,6 +1196,8 @@ static const struct eth_dev_ops ngbe_eth_dev_ops = { .rx_queue_release = ngbe_dev_rx_queue_release, .tx_queue_setup = ngbe_dev_tx_queue_setup, .tx_queue_release = ngbe_dev_tx_queue_release, + .rx_burst_mode_get = ngbe_rx_burst_mode_get, + .tx_burst_mode_get = ngbe_tx_burst_mode_get, }; RTE_PMD_REGISTER_PCI(net_ngbe, rte_ngbe_pmd); diff --git a/drivers/net/ngbe/ngbe_ethdev.h b/drivers/net/ngbe/ngbe_ethdev.h index 7b085f070f..286cb893d6 100644 --- a/drivers/net/ngbe/ngbe_ethdev.h +++ b/drivers/net/ngbe/ngbe_ethdev.h @@ -103,6 +103,13 @@ int ngbe_dev_tx_queue_start(struct rte_eth_dev *dev, uint16_t tx_queue_id); int ngbe_dev_tx_queue_stop(struct rte_eth_dev *dev, uint16_t tx_queue_id); +int +ngbe_rx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id, + struct rte_eth_burst_mode *mode); +int +ngbe_tx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id, + struct rte_eth_burst_mode *mode); + uint16_t ngbe_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t nb_pkts); diff --git a/drivers/net/ngbe/ngbe_rxtx.c b/drivers/net/ngbe/ngbe_rxtx.c index d1b825d0dc..5941e0a2d8 100644 --- a/drivers/net/ngbe/ngbe_rxtx.c +++ b/drivers/net/ngbe/ngbe_rxtx.c @@ -1689,6 +1689,34 @@ ngbe_set_tx_function(struct rte_eth_dev *dev, struct ngbe_tx_queue *txq) } } +static const struct { + eth_tx_burst_t pkt_burst; + const char *info; +} ngbe_tx_burst_infos[] = { + { ngbe_xmit_pkts_simple, "Scalar Simple"}, + { ngbe_xmit_pkts, "Scalar"}, +}; + +int +ngbe_tx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id, + struct rte_eth_burst_mode *mode) +{ + eth_tx_burst_t pkt_burst = dev->tx_pkt_burst; + int ret = -EINVAL; + unsigned int i; + + for (i = 0; i < RTE_DIM(ngbe_tx_burst_infos); ++i) { + if (pkt_burst == ngbe_tx_burst_infos[i].pkt_burst) { + snprintf(mode->info, sizeof(mode->info), "%s", + ngbe_tx_burst_infos[i].info); + ret = 0; + break; + } + } + + return ret; +} + uint64_t ngbe_get_tx_port_offloads(struct rte_eth_dev *dev) { @@ -2239,6 +2267,36 @@ ngbe_set_rx_function(struct rte_eth_dev *dev) } } +static const struct { + eth_rx_burst_t pkt_burst; + const char *info; +} ngbe_rx_burst_infos[] = { + { ngbe_recv_pkts_sc_single_alloc, "Scalar Scattered"}, + { ngbe_recv_pkts_sc_bulk_alloc, "Scalar Scattered Bulk Alloc"}, + { ngbe_recv_pkts_bulk_alloc, "Scalar Bulk Alloc"}, + { ngbe_recv_pkts, "Scalar"}, +}; + +int +ngbe_rx_burst_mode_get(struct rte_eth_dev *dev, __rte_unused uint16_t queue_id, + struct rte_eth_burst_mode *mode) +{ + eth_rx_burst_t pkt_burst = dev->rx_pkt_burst; + int ret = -EINVAL; + unsigned int i; + + for (i = 0; i < RTE_DIM(ngbe_rx_burst_infos); ++i) { + if (pkt_burst == ngbe_rx_burst_infos[i].pkt_burst) { + snprintf(mode->info, sizeof(mode->info), "%s", + ngbe_rx_burst_infos[i].info); + ret = 0; + break; + } + } + + return ret; +} + /* * Initializes Receive Unit. */