The mbuf_pool was being passed as parameter with same as global; resolve conflict by making variable local to main and passing where needed.
The num_devices was global but also passed as arg. Remove the parameter. Signed-off-by: Stephen Hemminger <[email protected]> Acked-by: Bruce Richardson <[email protected]> --- examples/vhost/main.c | 19 ++++++++++--------- examples/vhost/meson.build | 1 - 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/examples/vhost/main.c b/examples/vhost/main.c index ac888348d2..5978a50cfe 100644 --- a/examples/vhost/main.c +++ b/examples/vhost/main.c @@ -86,7 +86,6 @@ static uint32_t promiscuous; static uint32_t num_queues = 0; static uint32_t num_devices; -static struct rte_mempool *mbuf_pool; static int mergeable; /* Enable VM2VM communications. If this is disabled then the MAC address compare is skipped. */ @@ -387,7 +386,7 @@ open_dma(const char *value) * according to the pool & queue limits. */ static inline int -get_eth_conf(struct rte_eth_conf *eth_conf, uint32_t num_devices) +get_eth_conf(struct rte_eth_conf *eth_conf) { struct rte_eth_vmdq_rx_conf conf; struct rte_eth_vmdq_rx_conf *def_conf = @@ -415,7 +414,7 @@ get_eth_conf(struct rte_eth_conf *eth_conf, uint32_t num_devices) * coming from the mbuf_pool passed as parameter */ static inline int -port_init(uint16_t port) +port_init(uint16_t port, struct rte_mempool *mbuf_pool) { struct rte_eth_dev_info dev_info; struct rte_eth_conf port_conf; @@ -460,7 +459,7 @@ port_init(uint16_t port) } /* Get port configuration. */ - retval = get_eth_conf(&port_conf, num_devices); + retval = get_eth_conf(&port_conf); if (retval < 0) return retval; /* NIC queues are divided into pf queues and vmdq queues. */ @@ -1440,7 +1439,7 @@ uint16_t sync_dequeue_pkts(struct vhost_dev *dev, uint16_t queue_id, } static __rte_always_inline void -drain_virtio_tx(struct vhost_dev *vdev) +drain_virtio_tx(struct vhost_dev *vdev, struct rte_mempool *mbuf_pool) { struct rte_mbuf *pkts[MAX_PKT_BURST]; uint16_t count; @@ -1477,8 +1476,9 @@ drain_virtio_tx(struct vhost_dev *vdev) * } */ static int -switch_worker(void *arg __rte_unused) +switch_worker(void *arg) { + struct rte_mempool *mbuf_pool = arg; unsigned i; unsigned lcore_id = rte_lcore_id(); struct vhost_dev *vdev; @@ -1519,7 +1519,7 @@ switch_worker(void *arg __rte_unused) drain_eth_rx(vdev); if (likely(!vdev->remove)) - drain_virtio_tx(vdev); + drain_virtio_tx(vdev, mbuf_pool); } } @@ -1906,6 +1906,7 @@ reset_dma(void) int main(int argc, char *argv[]) { + struct rte_mempool *mbuf_pool = NULL; unsigned lcore_id, core_id = 0; unsigned nb_ports, valid_num_ports; int ret, i; @@ -1982,7 +1983,7 @@ main(int argc, char *argv[]) "Skipping disabled port %d\n", portid); continue; } - if (port_init(portid) != 0) + if (port_init(portid, mbuf_pool) != 0) rte_exit(EXIT_FAILURE, "Cannot initialize network ports\n"); } @@ -1998,7 +1999,7 @@ main(int argc, char *argv[]) /* Launch all data cores. */ RTE_LCORE_FOREACH_WORKER(lcore_id) - rte_eal_remote_launch(switch_worker, NULL, lcore_id); + rte_eal_remote_launch(switch_worker, mbuf_pool, lcore_id); if (client_mode) flags |= RTE_VHOST_USER_CLIENT; diff --git a/examples/vhost/meson.build b/examples/vhost/meson.build index af5049c7ef..e938be8f45 100644 --- a/examples/vhost/meson.build +++ b/examples/vhost/meson.build @@ -19,4 +19,3 @@ sources = files( 'virtio_net.c', ) cflags += no_wvla_cflag -cflags += no_shadow_cflag -- 2.53.0

