]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net/mlx5: E-switch, Clear legacy flag when moving to switchdev
authorShay Drory <shayd@nvidia.com>
Tue, 24 Feb 2026 11:46:50 +0000 (13:46 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 26 Feb 2026 04:01:44 +0000 (20:01 -0800)
The cited commit introduced MLX5_PRIV_FLAGS_SWITCH_LEGACY to identify
when a transition to legacy mode is requested via devlink.  However, the
logic failed to clear this flag if the mode was subsequently changed
back to MLX5_ESWITCH_OFFLOADS (switchdev).  Consequently, if a user
toggled from legacy to switchdev, the flag remained set, leaving the
driver with wrong state indicating

Fix this by explicitly clearing the MLX5_PRIV_FLAGS_SWITCH_LEGACY bit
when the requested mode is MLX5_ESWITCH_OFFLOADS.

Fixes: 2a4f56fbcc47 ("net/mlx5e: Keep netdev when leave switchdev for devlink set legacy only")
Signed-off-by: Shay Drory <shayd@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Link: https://patch.msgid.link/20260224114652.1787431-4-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c

index 1b439cef3719fae79c92b409253817dfa71e6d1d..9d51d030596c8f2f84c6dc859cd29f2be2f210d0 100644 (file)
@@ -4068,6 +4068,8 @@ int mlx5_devlink_eswitch_mode_set(struct devlink *devlink, u16 mode,
 
        if (mlx5_mode == MLX5_ESWITCH_LEGACY)
                esw->dev->priv.flags |= MLX5_PRIV_FLAGS_SWITCH_LEGACY;
+       if (mlx5_mode == MLX5_ESWITCH_OFFLOADS)
+               esw->dev->priv.flags &= ~MLX5_PRIV_FLAGS_SWITCH_LEGACY;
        mlx5_eswitch_disable_locked(esw);
        if (mlx5_mode == MLX5_ESWITCH_OFFLOADS) {
                if (mlx5_devlink_trap_get_num_active(esw->dev)) {