[PATCH v2] eventdev/eth_tx: fix queue delete logic

Naga Harish K S V s.v.naga.harish.k at intel.com
Fri Oct 21 08:43:14 CEST 2022


To delete all the queues of a ethernet device associated with
adapter instance the queue_id can be passed as -1 to the queue
delete API.

When a subset of queues of a ethernet device are associated,
the queue delete logic is exiting without deleting the queues
in some cases (higher numbered associated queues) for above
scenario as the queue delete logic is not checking all the
queue association status.

This patch fixes this issue by checking the queue association
status of all the queues of the ethernet device.

Fixes: 741b499e642 ("eventdev/eth_tx: fix queue delete logic")
Cc: stable at dpdk.org

Signed-off-by: Naga Harish K S V <s.v.naga.harish.k at intel.com>
---
v2:
* fix segfault during unit test and modify logic
---
---
 lib/eventdev/rte_event_eth_tx_adapter.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/eventdev/rte_event_eth_tx_adapter.c b/lib/eventdev/rte_event_eth_tx_adapter.c
index c2a848103b..88309d2aaa 100644
--- a/lib/eventdev/rte_event_eth_tx_adapter.c
+++ b/lib/eventdev/rte_event_eth_tx_adapter.c
@@ -934,6 +934,8 @@ txa_service_queue_del(uint8_t id,
 		uint16_t i, q, nb_queues;
 		int ret = 0;
 
+		if (txa->txa_ethdev == NULL)
+			return 0;
 		nb_queues = txa->txa_ethdev[port_id].nb_queues;
 		if (nb_queues == 0)
 			return 0;
@@ -946,10 +948,10 @@ txa_service_queue_del(uint8_t id,
 
 			if (tqi[q].added) {
 				ret = txa_service_queue_del(id, dev, q);
+				i++;
 				if (ret != 0)
 					break;
 			}
-			i++;
 			q++;
 		}
 		return ret;
-- 
2.25.1



More information about the stable mailing list