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: sta...@dpdk.org Signed-off-by: Naga Harish K S V <s.v.naga.haris...@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