From feca6c428a5e36102bb2ef45f8ea7855e4453b0e Mon Sep 17 00:00:00 2001 From: Wei Zhao Date: Wed, 27 Dec 2017 16:32:15 +0800 Subject: [PATCH] examples/flow_filtering: add Tx queues setup process This example does not have the process to set up the Tx queues, which is required by Intel NICs. So this patch adds that Tx setup to the application. Signed-off-by: Wei Zhao Acked-by: Ori Kam --- examples/flow_filtering/main.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/examples/flow_filtering/main.c b/examples/flow_filtering/main.c index 7d739b4aeb..4a07b63235 100644 --- a/examples/flow_filtering/main.c +++ b/examples/flow_filtering/main.c @@ -149,7 +149,18 @@ init_port(void) /**< CRC stripped by hardware */ .hw_strip_crc = 1, }, + .txmode = { + .offloads = + DEV_TX_OFFLOAD_VLAN_INSERT | + DEV_TX_OFFLOAD_IPV4_CKSUM | + DEV_TX_OFFLOAD_UDP_CKSUM | + DEV_TX_OFFLOAD_TCP_CKSUM | + DEV_TX_OFFLOAD_SCTP_CKSUM | + DEV_TX_OFFLOAD_TCP_TSO, + }, }; + struct rte_eth_txconf txq_conf; + struct rte_eth_dev_info dev_info; printf(":: initializing port: %d\n", port_id); ret = rte_eth_dev_configure(port_id, @@ -173,6 +184,21 @@ init_port(void) } } + rte_eth_dev_info_get(port_id, &dev_info); + txq_conf = dev_info.default_txconf; + txq_conf.offloads = port_conf.txmode.offloads; + + for (i = 0; i < nr_queues; i++) { + ret = rte_eth_tx_queue_setup(port_id, i, 512, + rte_eth_dev_socket_id(port_id), + &txq_conf); + if (ret < 0) { + rte_exit(EXIT_FAILURE, + ":: Tx queue setup failed: err=%d, port=%u\n", + ret, port_id); + } + } + rte_eth_promiscuous_enable(port_id); ret = rte_eth_dev_start(port_id); if (ret < 0) { -- 2.20.1