[spp] [PATCH 6/7] shared: fix for updating API of DPDK v18.05

Kenta Shinohara shinohara.kenta at lab.ntt.co.jp
Tue Jun 19 13:37:19 CEST 2018


An error has occured while executing spp primary.

execution error:
k-shino at tyrannosaurus:~/dpdk1805/spp$ sudo ./src/primary/x86_64-native
-linuxapp-gcc/spp_primary -l 2 -n 4 --socket-mem 512 --huge-dir=/dev/h
ugepages --proc-type=primary -- -p 0x02 -n 1 -s 192.168.122.1:5555
EAL: Detected 6 lcore(s)
EAL: Detected 1 NUMA nodes
EAL: Multi-process socket /var/run/.rte_unix
EAL: Probing VFIO support...
EAL: VFIO support initialized
EAL: PCI device 0000:00:19.0 on NUMA socket 0
EAL:   probe driver: 8086:153a net_e1000_em
EAL: PCI device 0000:04:00.0 on NUMA socket 0
EAL:   probe driver: 8086:105e net_e1000_em
EAL: PCI device 0000:04:00.1 on NUMA socket 0
EAL:   probe driver: 8086:105e net_e1000_em
APP: Port 1 init ... eth_em_tx_queue_setup(): 0xcd1680: Tx queue offlo
ads 0x801d don't match port offloads 0x0 or supported port offloads 0x
f or supported queue offloads 0xf
EAL: Error - exiting with code: 1
  Cause: Cannot initialise port 0

This error is caused by updating API of 'eth_em_tx_queue_setup()'.
To fix this, replace 5th argument of the method from 'NULL', which is
referenced from examples/l2fwd/main.c.

Signed-off-by: Kenta Shinohara <shinohara.kenta at lab.ntt.co.jp>

---
 src/shared/common.c | 13 ++++++++++++-
 1 file changed, 12 insertions(+), 1 deletion(-)

diff --git a/src/shared/common.c b/src/shared/common.c
index b11cb6d..10115d1 100644
--- a/src/shared/common.c
+++ b/src/shared/common.c
@@ -115,10 +115,21 @@ init_port(uint16_t port_num, struct rte_mempool *pktmbuf_pool)
 	const uint16_t tx_ring_size = RTE_MP_TX_DESC_DEFAULT;
 	uint16_t q;
 	int retval;
+	struct rte_eth_dev_info dev_info;
+	struct rte_eth_conf local_port_conf = port_conf;
+	struct rte_eth_txconf txq_conf;
 
 	RTE_LOG(INFO, APP, "Port %u init ... ", port_num);
 	fflush(stdout);
 
+	rte_eth_dev_info_get(port_num, &dev_info);
+	if (dev_info.tx_offload_capa & DEV_TX_OFFLOAD_MBUF_FAST_FREE)
+		local_port_conf.txmode.offloads |=
+			DEV_TX_OFFLOAD_MBUF_FAST_FREE;
+	txq_conf = dev_info.default_txconf;
+	txq_conf.txq_flags = ETH_TXQ_FLAGS_IGNORE;
+	txq_conf.offloads = local_port_conf.txmode.offloads;
+
 	/*
 	 * Standard DPDK port initialisation - config port, then set up
 	 * rx and tx rings
@@ -137,7 +148,7 @@ init_port(uint16_t port_num, struct rte_mempool *pktmbuf_pool)
 
 	for (q = 0; q < tx_rings; q++) {
 		retval = rte_eth_tx_queue_setup(port_num, q, tx_ring_size,
-			rte_eth_dev_socket_id(port_num), NULL);
+			rte_eth_dev_socket_id(port_num), &txq_conf);
 		if (retval < 0)
 			return retval;
 	}
-- 
2.15.1 (Apple Git-101)



More information about the spp mailing list