net/mlx5e: Fix port tunnel GRE entropy control
authorEli Britstein <elibr@mellanox.com>
Sun, 2 Jun 2019 06:19:03 +0000 (06:19 +0000)
committerSaeed Mahameed <saeedm@mellanox.com>
Thu, 11 Jul 2019 18:45:03 +0000 (11:45 -0700)
GRE entropy calculation is a single bit per card, and not per port.
Force disable GRE entropy calculation upon the first GRE encap rule,
and release the force at the last GRE encap rule removal. This is done
per port.

Fixes: 97417f6182f8 ("net/mlx5e: Fix GRE key by controlling port tunnel entropy calculation")
Signed-off-by: Eli Britstein <elibr@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/lib/port_tun.c

index be69c1d7941aeb015646d0372d417a694b767980..48b5c847b642a52ac4377242251f0b2ae2db80e0 100644 (file)
@@ -98,27 +98,12 @@ static int mlx5_set_entropy(struct mlx5_tun_entropy *tun_entropy,
         */
        if (entropy_flags.gre_calc_supported &&
            reformat_type == MLX5_REFORMAT_TYPE_L2_TO_NVGRE) {
-               /* Other applications may change the global FW entropy
-                * calculations settings. Check that the current entropy value
-                * is the negative of the updated value.
-                */
-               if (entropy_flags.force_enabled &&
-                   enable == entropy_flags.gre_calc_enabled) {
-                       mlx5_core_warn(tun_entropy->mdev,
-                                      "Unexpected GRE entropy calc setting - expected %d",
-                                      !entropy_flags.gre_calc_enabled);
-                       return -EOPNOTSUPP;
-               }
-               err = mlx5_set_port_gre_tun_entropy_calc(tun_entropy->mdev, enable,
-                                                        entropy_flags.force_supported);
+               if (!entropy_flags.force_supported)
+                       return 0;
+               err = mlx5_set_port_gre_tun_entropy_calc(tun_entropy->mdev,
+                                                        enable, !enable);
                if (err)
                        return err;
-               /* if we turn on the entropy we don't need to force it anymore */
-               if (entropy_flags.force_supported && enable) {
-                       err = mlx5_set_port_gre_tun_entropy_calc(tun_entropy->mdev, 1, 0);
-                       if (err)
-                               return err;
-               }
        } else if (entropy_flags.calc_supported) {
                /* Other applications may change the global FW entropy
                 * calculations settings. Check that the current entropy value