| From 69f709fd49155670d4c22d4fc28de079fe811685 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 5 Feb 2020 14:31:12 +0200 |
| Subject: net/mlx5: DR, Fix matching on vport gvmi |
| |
| From: Hamdan Igbaria <hamdani@mellanox.com> |
| |
| [ Upstream commit 52d214976d4f64504c1bbb52d47b46a5a3d5ee42 ] |
| |
| Set vport gvmi in the tag, only when source gvmi is set in the bit mask. |
| |
| Fixes: 26d688e3 ("net/mlx5: DR, Add Steering entry (STE) utilities") |
| Signed-off-by: Hamdan Igbaria <hamdani@mellanox.com> |
| Reviewed-by: Alex Vesker <valex@mellanox.com> |
| Signed-off-by: Saeed Mahameed <saeedm@mellanox.com> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste.c | 5 ++++- |
| 1 file changed, 4 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste.c b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste.c |
| index c6c7d1defbd78..aade62a9ee5ce 100644 |
| --- a/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste.c |
| +++ b/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste.c |
| @@ -2307,7 +2307,9 @@ static int dr_ste_build_src_gvmi_qpn_tag(struct mlx5dr_match_param *value, |
| struct mlx5dr_cmd_vport_cap *vport_cap; |
| struct mlx5dr_domain *dmn = sb->dmn; |
| struct mlx5dr_cmd_caps *caps; |
| + u8 *bit_mask = sb->bit_mask; |
| u8 *tag = hw_ste->tag; |
| + bool source_gvmi_set; |
| |
| DR_STE_SET_TAG(src_gvmi_qp, tag, source_qp, misc, source_sqn); |
| |
| @@ -2328,7 +2330,8 @@ static int dr_ste_build_src_gvmi_qpn_tag(struct mlx5dr_match_param *value, |
| if (!vport_cap) |
| return -EINVAL; |
| |
| - if (vport_cap->vport_gvmi) |
| + source_gvmi_set = MLX5_GET(ste_src_gvmi_qp, bit_mask, source_gvmi); |
| + if (vport_cap->vport_gvmi && source_gvmi_set) |
| MLX5_SET(ste_src_gvmi_qp, tag, source_gvmi, vport_cap->vport_gvmi); |
| |
| misc->source_eswitch_owner_vhca_id = 0; |
| -- |
| 2.20.1 |
| |