Skip to contentSkip to conversation

net/mlx5: fix the hairpin Tx queue reference count

PATCH In review Bing Zhao 2 participants 2 messages Mar 7, 2023 – Mar 19, 2023 Network drivers

lore
Share & tools
lore

Bing Zhao

author
#0 lore raw

PATCH 1/1 net/mlx5: fix the hairpin Tx queue reference count

When calling the haipin unbind interface, all the hairpin Tx queues of the port will be unbound from the peer Rx queues. If one of the Tx queue is working in the auto bind mode, the interface will return directly.

Only when the Tx and peer Rx ports are the same, the auto bind mode is supported. In this condition branch, the Tx queue release is missed and the reference count is not decreased. Then in the port stop stage, the hardware resources of this Tx queue won't be freed. There would be some assertion or failure when starting the port again.

With this commit, the reference count will be operated correctly.

Fixes 37cd4501e873 ("net/mlx5: support two ports hairpin mode")
---
 drivers/net/mlx5/mlx5_trigger.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/mlx5/mlx5_trigger.c +1 -1
index 3457bf65d3..bbaa7d2aa0 100644
@@ -896,11 +896,11 @@ mlx5_hairpin_unbind_single_port(struct rte_eth_dev *dev, uint16_t rx_port)
 		}
 		/* Indeed, only the first used queue needs to be checked. */
 		if (txq_ctrl->hairpin_conf.manual_bind == 0) {
+			mlx5_txq_release(dev, i);
 			if (cur_port != rx_port) {
 				rte_errno = EINVAL;
 				DRV_LOG(ERR, "port %u and port %u are in"
 					" auto-bind mode", cur_port, rx_port);
-				mlx5_txq_release(dev, i);
 				return -rte_errno;
 			} else {
 				return 0;
Signature · 1 line
2.31.1
#1 lore raw

Hi,

Quoted 22 lines

-----Original Message-----
From: Bing Zhao <[email protected]>
Sent: Tuesday, March 7, 2023 12:31 PM
To: Raslan Darawsheh <[email protected]>
Cc: [email protected]; [email protected]; Matan Azrad <[email protected]>; Slava Ovsiienko <[email protected]>
Subject: [PATCH] net/mlx5: fix the hairpin Tx queue reference count

When calling the haipin unbind interface, all the hairpin Tx queues of the port will be unbound from the peer Rx queues. If one of the Tx queue is working in the auto bind mode, the interface will return directly.

Only when the Tx and peer Rx ports are the same, the auto bind mode is supported. In this condition branch, the Tx queue release is missed and the reference count is not decreased. Then in the port stop stage, the hardware resources of this Tx queue won't be freed. There would be some assertion or failure when starting the port again.

With this commit, the reference count will be operated correctly.

Quoted 7 lines
Fixes 37cd4501e873 ("net/mlx5: support two ports hairpin mode")

---

Patch applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh