From 881d4b4d8587419197815db57b94fc58ee487445 Mon Sep 17 00:00:00 2001 From: Naga Harish K S V <s.v.naga.harish.k@intel.com> Date: Thu, 23 Jun 2022 15:35:11 +0530 Subject: [PATCH] eventdev/eth_tx: fix queue delete Add spinlock protection in queue delete function. This protects the data path while the queue delete operation is in progress. Fixes: a3bbf2e09756 ("eventdev: add eth Tx adapter implementation") Cc: stable@dpdk.org Signed-off-by: Naga Harish K S V <s.v.naga.harish.k@intel.com> Acked-by: Jay Jayatheerthan <jay.jayatheerthan@intel.com> --- lib/eventdev/rte_event_eth_tx_adapter.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/eventdev/rte_event_eth_tx_adapter.c b/lib/eventdev/rte_event_eth_tx_adapter.c index c700fb7b1f..b4b37f1cae 100644 --- a/lib/eventdev/rte_event_eth_tx_adapter.c +++ b/lib/eventdev/rte_event_eth_tx_adapter.c @@ -891,9 +891,10 @@ txa_service_queue_del(uint8_t id, txa = txa_service_id_to_data(id); + rte_spinlock_lock(&txa->tx_lock); tqi = txa_service_queue(txa, port_id, tx_queue_id); if (tqi == NULL || !tqi->added) - return 0; + goto ret_unlock; tb = tqi->tx_buf; tqi->added = 0; @@ -903,6 +904,9 @@ txa_service_queue_del(uint8_t id, txa->txa_ethdev[port_id].nb_queues--; txa_service_queue_array_free(txa, port_id); + +ret_unlock: + rte_spinlock_unlock(&txa->tx_lock); return 0; } -- 2.39.5