net/mlx5: fix vport index in port action

Message ID 1573980506-866-1-git-send-email-viacheslavo@mellanox.com (mailing list archive)
State Accepted, archived
Delegated to: Raslan Darawsheh
Headers
Series net/mlx5: fix vport index in port action |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-compilation success Compile Testing PASS
ci/Intel-compilation success Compilation OK
ci/iol-mellanox-Performance success Performance Testing PASS

Commit Message

Slava Ovsiienko Nov. 17, 2019, 8:48 a.m. UTC
  The rdma_core routine mlx5dv_dr_create_flow_action_dest_vport()
requires the vport id parameter to create port action.
The register c[0] value was used to deduce the port id value
and it fails in bonding configuration. The correct way is
to apply vport_num value queried from the rdma_core library.

Fixes: f07341e7aed3 ("net/mlx5: update source and destination vport translations")

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
---
 drivers/net/mlx5/mlx5.c         | 3 ++-
 drivers/net/mlx5/mlx5_flow_dv.c | 6 +-----
 2 files changed, 3 insertions(+), 6 deletions(-)
  

Comments

Raslan Darawsheh Nov. 17, 2019, 2:26 p.m. UTC | #1
Hi,

> -----Original Message-----
> From: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> Sent: Sunday, November 17, 2019 10:48 AM
> To: dev@dpdk.org
> Cc: Matan Azrad <matan@mellanox.com>; Raslan Darawsheh
> <rasland@mellanox.com>; Ori Kam <orika@mellanox.com>
> Subject: [PATCH] net/mlx5: fix vport index in port action
> 
> The rdma_core routine mlx5dv_dr_create_flow_action_dest_vport()
> requires the vport id parameter to create port action.
> The register c[0] value was used to deduce the port id value
> and it fails in bonding configuration. The correct way is
> to apply vport_num value queried from the rdma_core library.
> 
> Fixes: f07341e7aed3 ("net/mlx5: update source and destination vport
> translations")
> 
> Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
> ---
>  drivers/net/mlx5/mlx5.c         | 3 ++-
>  drivers/net/mlx5/mlx5_flow_dv.c | 6 +-----
>  2 files changed, 3 insertions(+), 6 deletions(-)
> 


Patch applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh
  

Patch

diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index 35baaf7..b0b9954 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -2225,7 +2225,8 @@  struct mlx5_flow_id_pool *
 			err = ENOTSUP;
 			goto error;
 		}
-	} else if (devx_port.comp_mask & MLX5DV_DEVX_PORT_VPORT) {
+	}
+	if (devx_port.comp_mask & MLX5DV_DEVX_PORT_VPORT) {
 		priv->vport_id = devx_port.vport_num;
 	} else if (spawn->pf_bond >= 0) {
 		DRV_LOG(ERR, "can't deduce vport index for port %d"
diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index 5a0cd09..ac0f1f1 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -6531,11 +6531,7 @@  struct field_modify_info modify_tcp[] = {
 					  RTE_FLOW_ERROR_TYPE_ACTION,
 					  NULL,
 					  "No eswitch info was found for port");
-	if (priv->vport_meta_mask)
-		*dst_port_id = priv->vport_meta_tag >>
-			rte_bsf32(priv->vport_meta_mask);
-	else
-		*dst_port_id = priv->vport_id;
+	*dst_port_id = priv->vport_id;
 	return 0;
 }