This example do not has the process of set up tx queues, but some NIC start up process will be blocked if this is no tx queue and only rx queues. So add tx queues setup process in main code.
Signed-off-by: Wei Zhao <wei.zh...@intel.com> --- v2: -add support the new tx offloads. --- 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 7d739b4..4a07b63 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.9.3