From 66af142f2a307da10a5f68d9288e0b72ad60e35e Mon Sep 17 00:00:00 2001 From: Pavan Nikhilesh Date: Tue, 12 Mar 2019 20:41:09 +0000 Subject: [PATCH] examples/eventdev: start ethdev after adapter setup Start ethdev after the Rx/Tx adapter setup is complete as in some architectures it might lead to undefined behaviour or events being dropped. Signed-off-by: Pavan Nikhilesh Reviewed-by: Nikhil Rao --- examples/eventdev_pipeline/main.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/examples/eventdev_pipeline/main.c b/examples/eventdev_pipeline/main.c index 2ad7d24e25..58f8904e04 100644 --- a/examples/eventdev_pipeline/main.c +++ b/examples/eventdev_pipeline/main.c @@ -316,11 +316,6 @@ port_init(uint8_t port, struct rte_mempool *mbuf_pool) return retval; } - /* Start the Ethernet port. */ - retval = rte_eth_dev_start(port); - if (retval < 0) - return retval; - /* Display the port MAC address. */ struct ether_addr addr; rte_eth_macaddr_get(port, &addr); @@ -441,6 +436,7 @@ main(int argc, char **argv) { struct worker_data *worker_data; uint16_t num_ports; + uint16_t portid; int lcore_id; int err; @@ -508,6 +504,14 @@ main(int argc, char **argv) init_ports(num_ports); fdata->cap.adptr_setup(num_ports); + /* Start the Ethernet port. */ + RTE_ETH_FOREACH_DEV(portid) { + err = rte_eth_dev_start(portid); + if (err < 0) + rte_exit(EXIT_FAILURE, "Error starting ethdev %d\n", + portid); + } + int worker_idx = 0; RTE_LCORE_FOREACH_SLAVE(lcore_id) { if (lcore_id >= MAX_NUM_CORE) -- 2.20.1