Skip to contentSkip to conversation

net/mlx5: fix Rx objects creator selection

PATCH In review Michael Baum 2 participants 3 messages Sep 13, 2020 – Sep 15, 2020 Network drivers

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 net/mlx5: fix Rx objects creator selection

There are 2 creators for Rx objects, DevX and Verbs.
There are supported DR versions when a DevX destination TIR flow action creation cannot be supported, using this versions the TIR object should be created by Verbs, what forces all the Rx objects to be created by Verbs.

The selection of the Rx objects creator, wrongly, didn't take into account the destination TIR action support what caused a failure in the Rx flows creation.

Select Verbs creator when destination TIR action creation is not supported by the DR version.

Fixes 71dee7694a70 ("net/mlx5: separate Rx queue object creations")
---
 drivers/net/mlx5/linux/mlx5_os.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/mlx5/linux/mlx5_os.c +1 -1
index 41db75e..0511a55 100644
@@ -1272,7 +1272,7 @@
 			goto error;
 		}
 	}
-	if (config->devx && config->dv_flow_en) {
+	if (config->devx && config->dv_flow_en && config->dest_tir) {
 		priv->obj_ops = devx_obj_ops;
 		priv->obj_ops.drop_action_create =
 						ibv_obj_ops.drop_action_create;
Signature · 1 line
1.8.3.1
#1 lore raw

PATCH 2/2 net/mlx5: fix using hairpin without dest DevX TIR support

The PMD supports hairpin only if DevX is supported and DV flow is enable.

When destination DevX TIR is not supported, the PMD tries to create TIR action, and fails.

Avoid supporting hairpin when destination DevX TIR is not supported.

Fixes b6b3bf86bd1a ("net/mlx5: get hairpin capabilities")
---
 drivers/net/mlx5/mlx5_ethdev.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/net/mlx5/mlx5_ethdev.c +3 -3
index cefb450..a7924b1 100644
@@ -569,12 +569,12 @@ struct mlx5_priv *
  *   0 on success, a negative errno value otherwise and rte_errno is set.
  */
 int
-mlx5_hairpin_cap_get(struct rte_eth_dev *dev,
-			 struct rte_eth_hairpin_cap *cap)
+mlx5_hairpin_cap_get(struct rte_eth_dev *dev, struct rte_eth_hairpin_cap *cap)
 {
 	struct mlx5_priv *priv = dev->data->dev_private;
+	struct mlx5_dev_config *config = &priv->config;
 
-	if (priv->sh->devx == 0) {
+	if (!priv->sh->devx || !config->dest_tir || !config->dv_flow_en) {
 		rte_errno = ENOTSUP;
 		return -rte_errno;
 	}
Signature · 1 line
1.8.3.1
#2 lore raw
In reply to Michael Baum

Hi,

Quoted 44 lines

-----Original Message-----
From: Michael Baum <[email protected]>
Sent: Sunday, September 13, 2020 10:05 PM
To: [email protected]
Cc: Matan Azrad <[email protected]>; Raslan Darawsheh <[email protected]>; Slava Ovsiienko <[email protected]>
Subject: [PATCH v1 1/2] net/mlx5: fix Rx objects creator selection

There are 2 creators for Rx objects, DevX and Verbs.
There are supported DR versions when a DevX destination TIR flow action creation cannot be supported, using this versions the TIR object should be created by Verbs, what forces all the Rx objects to be created by Verbs.

The selection of the Rx objects creator, wrongly, didn't take into account the destination TIR action support what caused a failure in the Rx flows creation.

Select Verbs creator when destination TIR action creation is not supported by the DR version.

Fixes 71dee7694a70 ("net/mlx5: separate Rx queue object creations")
---
 drivers/net/mlx5/linux/mlx5_os.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/mlx5/linux/mlx5_os.c +1 -1
index 41db75e..0511a55 100644
@@ -1272,7 +1272,7 @@
 			goto error;
 		}
 	}
-	if (config->devx && config->dv_flow_en) {
+	if (config->devx && config->dv_flow_en && config->dest_tir) {
 		priv->obj_ops = devx_obj_ops;
 		priv->obj_ops.drop_action_create =
 
	ibv_obj_ops.drop_action_create;
Quoted 2 lines

--
1.8.3.1

Series applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh