Commit cd7671ef authored by Moshe Shemesh's avatar Moshe Shemesh Committed by Paolo Abeni
Browse files

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: a32327a3 ("net/mlx5: Lag, Control MultiPort E-Switch single FDB mode")
Signed-off-by: default avatarMoshe Shemesh <moshe@nvidia.com>
Reviewed-by: default avatarShay Drori <shayd@nvidia.com>
Signed-off-by: default avatarTariq Toukan <tariqt@nvidia.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Link: https://patch.msgid.link/1764602008-1334866-2-git-send-email-tariqt@nvidia.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent ce052b94
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -67,12 +67,19 @@ static int mlx5_mpesw_metadata_set(struct mlx5_lag *ldev)

static int enable_mpesw(struct mlx5_lag *ldev)
{
	int idx = mlx5_lag_get_dev_index_by_seq(ldev, MLX5_LAG_P1);
	struct mlx5_core_dev *dev0;
	int err;
	int idx;
	int i;

	if (idx < 0 || ldev->mode != MLX5_LAG_MODE_NONE)
	if (ldev->mode == MLX5_LAG_MODE_MPESW)
		return 0;

	if (ldev->mode != MLX5_LAG_MODE_NONE)
		return -EINVAL;

	idx = mlx5_lag_get_dev_index_by_seq(ldev, MLX5_LAG_P1);
	if (idx < 0)
		return -EINVAL;

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