summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorViacheslav Ovsiienko <viacheslavo@mellanox.com>2019-11-17 08:48:26 +0000
committerFerruh Yigit <ferruh.yigit@intel.com>2019-11-20 17:36:06 +0100
commit85c4bcbcc57326cc63ad52082fa090cdfc7855a0 (patch)
treeb98ceef37ac14bb09efe270d57cd0c3b9107367b /drivers
parent54534725d2f329ed6e45aa7400e0c2c21aa1b69d (diff)
downloaddpdk-85c4bcbcc57326cc63ad52082fa090cdfc7855a0.zip
dpdk-85c4bcbcc57326cc63ad52082fa090cdfc7855a0.tar.gz
dpdk-85c4bcbcc57326cc63ad52082fa090cdfc7855a0.tar.xz
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>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/mlx5/mlx5.c3
-rw-r--r--drivers/net/mlx5/mlx5_flow_dv.c6
2 files changed, 3 insertions, 6 deletions
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index d9da6f8..b686129 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -2343,7 +2343,8 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
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 42f36cc..c9dbd89 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -6501,11 +6501,7 @@ flow_dv_translate_action_port_id(struct rte_eth_dev *dev,
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;
}