]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
net/mlx5e: Fix traffic duplication in ethtool steering
authorSaeed Mahameed <saeedm@mellanox.com>
Wed, 11 Sep 2019 14:50:13 +0000 (07:50 -0700)
committerSaeed Mahameed <saeedm@mellanox.com>
Tue, 24 Sep 2019 09:38:08 +0000 (12:38 +0300)
Before this patch, when adding multiple ethtool steering rules with
identical classification, the driver used to append the new destination
to the already existing hw rule, which caused the hw to forward the
traffic to all destinations (rx queues).

Here we avoid this by setting the "no append" mlx5 fs core flag when
adding a new ethtool rule.

Fixes: 6dc6071cfcde ("net/mlx5e: Add ethtool flow steering support")
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Reviewed-by: Maor Gottlieb <maorg@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/en_fs_ethtool.c

index eed7101e8bb7d60b3523d54201a7489d6a372a42..acd946f2ddbe725d4612236541d2c1ad374ed7ed 100644 (file)
@@ -399,10 +399,10 @@ add_ethtool_flow_rule(struct mlx5e_priv *priv,
                      struct mlx5_flow_table *ft,
                      struct ethtool_rx_flow_spec *fs)
 {
+       struct mlx5_flow_act flow_act = { .flags = FLOW_ACT_NO_APPEND };
        struct mlx5_flow_destination *dst = NULL;
-       struct mlx5_flow_act flow_act = {0};
-       struct mlx5_flow_spec *spec;
        struct mlx5_flow_handle *rule;
+       struct mlx5_flow_spec *spec;
        int err = 0;
 
        spec = kvzalloc(sizeof(*spec), GFP_KERNEL);