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

Naga Harish K S V s.v.naga.harish.k at intel.com
Wed Feb 9 06:31:51 CET 2022


The internal function txa_service_queue_add is returning 0
in case of error. correct this logic to return a negative value
to indicate failure.

Fixes: a3bbf2e09756 ("eventdev: add eth Tx adapter implementation")

Signed-off-by: Naga Harish K S V <s.v.naga.harish.k at intel.com>

---
v2:
* adjust commit message line size
---
 lib/eventdev/rte_event_eth_tx_adapter.c | 14 +++++++++-----
 1 file changed, 9 insertions(+), 5 deletions(-)

diff --git a/lib/eventdev/rte_event_eth_tx_adapter.c b/lib/eventdev/rte_event_eth_tx_adapter.c
index c17f33f098..1b304f0a73 100644
--- a/lib/eventdev/rte_event_eth_tx_adapter.c
+++ b/lib/eventdev/rte_event_eth_tx_adapter.c
@@ -806,10 +806,8 @@ txa_service_queue_add(uint8_t id,
 
 	rte_spinlock_lock(&txa->tx_lock);
 
-	if (txa_service_is_queue_added(txa, eth_dev, tx_queue_id)) {
-		rte_spinlock_unlock(&txa->tx_lock);
-		return 0;
-	}
+	if (txa_service_is_queue_added(txa, eth_dev, tx_queue_id))
+		goto ret_unlock;
 
 	ret = txa_service_queue_array_alloc(txa, eth_dev->data->port_id);
 	if (ret)
@@ -821,6 +819,8 @@ txa_service_queue_add(uint8_t id,
 
 	tdi = &txa->txa_ethdev[eth_dev->data->port_id];
 	tqi = txa_service_queue(txa, eth_dev->data->port_id, tx_queue_id);
+	if (tqi == NULL)
+		goto err_unlock;
 
 	txa_retry = &tqi->txa_retry;
 	txa_retry->id = txa->id;
@@ -836,6 +836,10 @@ txa_service_queue_add(uint8_t id,
 	tdi->nb_queues++;
 	txa->nb_queues++;
 
+ret_unlock:
+	rte_spinlock_unlock(&txa->tx_lock);
+	return 0;
+
 err_unlock:
 	if (txa->nb_queues == 0) {
 		txa_service_queue_array_free(txa,
@@ -844,7 +848,7 @@ txa_service_queue_add(uint8_t id,
 	}
 
 	rte_spinlock_unlock(&txa->tx_lock);
-	return 0;
+	return -1;
 }
 
 static int
-- 
2.23.0



More information about the dev mailing list