net/mlx5: fix Rx objects creator selection
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.
--- drivers/net/mlx5/linux/mlx5_os.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
drivers/net/mlx5/linux/mlx5_os.c +1 -1
@@ -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
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.
--- drivers/net/mlx5/mlx5_ethdev.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
drivers/net/mlx5/mlx5_ethdev.c +3 -3
@@ -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
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 selectionThere 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")Signed-off-by Michael Baum <[email protected]>Acked-by Matan Azrad <[email protected]>--- drivers/net/mlx5/linux/mlx5_os.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)drivers/net/mlx5/linux/mlx5_os.c +1
-1@@ -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