Thread (16 messages) 16 messages, 2 authors, 2022-05-25

Re: [EXT] Re: [dpdk-stable] [PATCH v2] test: avoid hang if queues are full and Tx fails

From: Thomas Monjalon <hidden>
Date: 2021-11-22 08:58:25

22/11/2021 08:59, Rakesh Kudurumalla:
From: Thomas Monjalon <redacted>
quoted
20/07/2021 18:50, Rakesh Kudurumalla:
quoted
Current pmd_perf_autotest() in continuous mode tries to enqueue
MAX_TRAFFIC_BURST completely before starting the test. Some drivers
cannot accept complete MAX_TRAFFIC_BURST even though rx+tx desc
count
quoted
can fit it.
Which driver is failing to do so?
Why it cannot enqueue 32 packets?
Octeontx2 driver is failing to enqueue because hardware buffers are full before test.
Why hardware buffers are full?
pmd_perf_autotest() in continuous mode tries to enqueue MAX_TRAFFIC_BURST (2048)
before starting the test.
quoted
quoted
This patch changes behaviour to stop enqueuing after few retries.
If there is a real limitation, there will be issues in more places than this test
program.
I feel it should be addressed either in the driver or at ethdev level.

[...]
quoted
@@ -480,10 +483,19 @@ main_loop(__rte_unused void *args)
 			nb_tx = RTE_MIN(MAX_PKT_BURST, num);
 			nb_tx = rte_eth_tx_burst(portid, 0,
 						&tx_burst[idx], nb_tx);
+			if (nb_tx == 0)
+				retry_cnt++;
 			num -= nb_tx;
 			idx += nb_tx;
+			if (retry_cnt == MAX_RETRY_COUNT) {
+				retry_cnt = 0;
+				break;
+			}

Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help