net/mlx5: DR, Fix matching on vport gvmi
authorHamdan Igbaria <hamdani@mellanox.com>
Wed, 5 Feb 2020 12:31:12 +0000 (14:31 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Wed, 19 Feb 2020 03:01:19 +0000 (19:01 -0800)
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>
drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste.c

index c6c7d1defbd788ee657f45c8e3914c6e8393243e..aade62a9ee5ce93e59c9ffb139665d9eaf277b5b 100644 (file)
@@ -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;