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>
This commit is contained in:
parent
54534725d2
commit
85c4bcbcc5
@ -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"
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user