net/mlx5: fix vport id in port id action

The kernel driver (starting from OFED 4.7.3.1.3) uses the upper half
of metadata register C0 to provide VHCA and vport id's. The mlx5 PMD
should check the actual mask of register C0 and shift the vport id
value for port actions appropriately.

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

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
This commit is contained in:
Viacheslav Ovsiienko 2019-11-14 08:56:36 +00:00 committed by Ferruh Yigit
parent 06f78b5ebc
commit 99eafd1b7a

View File

@ -6532,7 +6532,8 @@ flow_dv_translate_action_port_id(struct rte_eth_dev *dev,
NULL, NULL,
"No eswitch info was found for port"); "No eswitch info was found for port");
if (priv->vport_meta_mask) if (priv->vport_meta_mask)
*dst_port_id = priv->vport_meta_tag; *dst_port_id = priv->vport_meta_tag >>
rte_bsf32(priv->vport_meta_mask);
else else
*dst_port_id = priv->vport_id; *dst_port_id = priv->vport_id;
return 0; return 0;