RE: [EXT] Re: [dpdk-stable] [PATCH v2] test: avoid hang if queues are full and Tx fails
From: Rakesh Kudurumalla <hidden>
Date: 2021-11-22 07:59:35
Octeontx2 driver is failing to enqueue because hardware buffers are full before test. pmd_perf_autotest() in continuous mode tries to enqueue MAX_TRAFFIC_BURST (2048) before starting the test.
-----Original Message----- From: Thomas Monjalon <redacted> Sent: Friday, November 12, 2021 5:02 PM To: Rakesh Kudurumalla <redacted> Cc: stable@dpdk.org; dev@dpdk.org; david.marchand@redhat.com; ferruh.yigit@intel.com; andrew.rybchenko@oktetlabs.ru; ajit.khaparde@broadcom.com; Jerin Jacob Kollanukkaran [off-list ref] Subject: [EXT] Re: [dpdk-stable] [PATCH v2] test: avoid hang if queues are full and Tx fails External Email ---------------------------------------------------------------------- 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 desccountquoted
can fit it.Which driver is failing to do so? Why it cannot enqueue 32 packets?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; + }