Skip to content

Commit cd7671e

Browse files
mosheshemesh2Paolo Abeni
authored andcommitted
net/mlx5: make enable_mpesw idempotent
The enable_mpesw() function returns -EINVAL if ldev->mode is not MLX5_LAG_MODE_NONE. This means attempting to enable MPESW mode when it's already enabled will fail. In contrast, disable_mpesw() properly checks if the mode is MLX5_LAG_MODE_MPESW before proceeding, making it naturally idempotent and safe to call multiple times. Fix enable_mpesw() to return success if mpesw is already enabled. Fixes: a32327a ("net/mlx5: Lag, Control MultiPort E-Switch single FDB mode") Signed-off-by: Moshe Shemesh <moshe@nvidia.com> Reviewed-by: Shay Drori <shayd@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/1764602008-1334866-2-git-send-email-tariqt@nvidia.com Signed-off-by: Paolo Abeni <pabeni@redhat.com>
1 parent ce052b9 commit cd7671e

File tree

1 file changed

+9
-2
lines changed
  • drivers/net/ethernet/mellanox/mlx5/core/lag

1 file changed

+9
-2
lines changed

drivers/net/ethernet/mellanox/mlx5/core/lag/mpesw.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,12 +67,19 @@ static int mlx5_mpesw_metadata_set(struct mlx5_lag *ldev)
6767

6868
static int enable_mpesw(struct mlx5_lag *ldev)
6969
{
70-
int idx = mlx5_lag_get_dev_index_by_seq(ldev, MLX5_LAG_P1);
7170
struct mlx5_core_dev *dev0;
7271
int err;
72+
int idx;
7373
int i;
7474

75-
if (idx < 0 || ldev->mode != MLX5_LAG_MODE_NONE)
75+
if (ldev->mode == MLX5_LAG_MODE_MPESW)
76+
return 0;
77+
78+
if (ldev->mode != MLX5_LAG_MODE_NONE)
79+
return -EINVAL;
80+
81+
idx = mlx5_lag_get_dev_index_by_seq(ldev, MLX5_LAG_P1);
82+
if (idx < 0)
7683
return -EINVAL;
7784

7885
dev0 = ldev->pf[idx].dev;

0 commit comments

Comments
 (0)