]> git.baikalelectronics.ru Git - kernel.git/commitdiff
net/mlx5: Consider encapsulation properties when comparing destinations
authorEli Britstein <elibr@mellanox.com>
Sun, 18 Nov 2018 06:25:17 +0000 (08:25 +0200)
committerSaeed Mahameed <saeedm@mellanox.com>
Tue, 11 Dec 2018 22:52:19 +0000 (14:52 -0800)
Currently the driver identifies identical vport destinations by
comparing the vport ID. The FW extended destination feature enables the
driver to forward the packet to the same vport with multiple
encapsulation properties.

Change the vport destination comparison logic to compare
the encapsulation properties in addition to the vport ID.

Signed-off-by: Eli Britstein <elibr@mellanox.com>
Acked-by: Or Gerlitz <ogerlitz@mellanox.com>
Reviewed-by: Oz Shlomo <ozsh@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c

index 9d73eb955f75e0c4e19047aae6cf52d9457e6c64..f21277e636a38abaef98ac7ce5078950a73a9a53 100644 (file)
@@ -1373,7 +1373,10 @@ static bool mlx5_flow_dests_cmp(struct mlx5_flow_destination *d1,
 {
        if (d1->type == d2->type) {
                if ((d1->type == MLX5_FLOW_DESTINATION_TYPE_VPORT &&
-                    d1->vport.num == d2->vport.num) ||
+                    d1->vport.num == d2->vport.num &&
+                    d1->vport.flags == d2->vport.flags &&
+                    ((d1->vport.flags & MLX5_FLOW_DEST_VPORT_REFORMAT_ID) ?
+                     (d1->vport.reformat_id == d2->vport.reformat_id) : true)) ||
                    (d1->type == MLX5_FLOW_DESTINATION_TYPE_FLOW_TABLE &&
                     d1->ft == d2->ft) ||
                    (d1->type == MLX5_FLOW_DESTINATION_TYPE_TIR &&