net/mlx5: Prevent flow steering mode changes in switchdev mode
authorMoshe Shemesh <moshe@nvidia.com>
Mon, 25 Aug 2025 14:34:31 +0000 (17:34 +0300)
committerJakub Kicinski <kuba@kernel.org>
Wed, 27 Aug 2025 01:00:26 +0000 (18:00 -0700)
Changing flow steering modes is not allowed when eswitch is in switchdev
mode. This fix ensures that any steering mode change, including to
firmware steering, is correctly blocked while eswitch mode is switchdev.

Fixes: e890acd5ff18 ("net/mlx5: Add devlink flow_steering_mode parameter")
Signed-off-by: Moshe Shemesh <moshe@nvidia.com>
Signed-off-by: Mark Bloch <mbloch@nvidia.com>
Link: https://patch.msgid.link/20250825143435.598584-9-mbloch@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c

index d87392360dbd27cb1895a4e3b7d5f8d3e354f0d7..cb165085a4c10cfad575edd6fd84b0bec305676b 100644 (file)
@@ -3734,6 +3734,13 @@ static int mlx5_fs_mode_validate(struct devlink *devlink, u32 id,
        char *value = val.vstr;
        u8 eswitch_mode;
 
+       eswitch_mode = mlx5_eswitch_mode(dev);
+       if (eswitch_mode == MLX5_ESWITCH_OFFLOADS) {
+               NL_SET_ERR_MSG_FMT_MOD(extack,
+                                      "Changing fs mode is not supported when eswitch offloads enabled.");
+               return -EOPNOTSUPP;
+       }
+
        if (!strcmp(value, "dmfs"))
                return 0;
 
@@ -3759,14 +3766,6 @@ static int mlx5_fs_mode_validate(struct devlink *devlink, u32 id,
                return -EINVAL;
        }
 
-       eswitch_mode = mlx5_eswitch_mode(dev);
-       if (eswitch_mode == MLX5_ESWITCH_OFFLOADS) {
-               NL_SET_ERR_MSG_FMT_MOD(extack,
-                                      "Moving to %s is not supported when eswitch offloads enabled.",
-                                      value);
-               return -EOPNOTSUPP;
-       }
-
        return 0;
 }