From 90998bc00253730fc640d51e9995e71c2abbd6d0 Mon Sep 17 00:00:00 2001 From: Mohsin Kazmi Date: Thu, 31 Mar 2022 21:59:15 +0000 Subject: dpdk: add multi-txq support Type: improvement Signed-off-by: Mohsin Kazmi Change-Id: I9f061a05d947bc2867e1b962bf0522ad344bcc1a --- src/plugins/dpdk/device/init.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/plugins/dpdk/device/init.c') diff --git a/src/plugins/dpdk/device/init.c b/src/plugins/dpdk/device/init.c index 13cecda9bf4..6d3b8643147 100644 --- a/src/plugins/dpdk/device/init.c +++ b/src/plugins/dpdk/device/init.c @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include @@ -429,6 +430,8 @@ dpdk_lib_init (dpdk_main_t * dm) vec_validate_aligned (xd->rx_queues, xd->conf.n_rx_queues - 1, CLIB_CACHE_LINE_BYTES); + vec_validate_aligned (xd->tx_queues, xd->conf.n_tx_queues - 1, + CLIB_CACHE_LINE_BYTES); rte_eth_macaddr_get (port_id, (void *) addr); @@ -469,6 +472,19 @@ dpdk_lib_init (dpdk_main_t * dm) vnm, xd->hw_if_index, q, VNET_HW_IF_RXQ_THREAD_ANY); } + for (q = 0; q < xd->conf.n_tx_queues; q++) + { + dpdk_tx_queue_t *txq = vec_elt_at_index (xd->tx_queues, q); + txq->queue_index = + vnet_hw_if_register_tx_queue (vnm, xd->hw_if_index, q); + } + + for (q = 0; q < tm->n_vlib_mains; q++) + { + u32 qi = xd->tx_queues[q % xd->conf.n_tx_queues].queue_index; + vnet_hw_if_tx_queue_assign_thread (vnm, qi, q); + } + if (devconf->tso == DPDK_DEVICE_TSO_ON) { /*tcp_udp checksum must be enabled*/ -- cgit 1.2.3-korg