Commit 2318b8bb authored by Chris Mi's avatar Chris Mi Committed by Saeed Mahameed
Browse files

net/mlx5: E-switch, Destroy legacy fdb table when needed



The cited commit removes eswitch mode none. But when disabling
sriov in legacy mode or changing from switchdev to legacy mode
without sriov enabled, the legacy fdb table is not destroyed.

It is not the right behavior. Destroy legacy fdb table in above
two caes.

Fixes: f019679e ("net/mlx5: E-switch, Remove dependency between sriov and eswitch mode")
Signed-off-by: default avatarChris Mi <cmi@nvidia.com>
Reviewed-by: default avatarRoi Dayan <roid@nvidia.com>
Reviewed-by: default avatarEli Cohen <elic@nvidia.com>
Reviewed-by: default avatarMark Bloch <mbloch@nvidia.com>
Reviewed-by: default avatarVlad Buslov <vladbu@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
parent 52f7cf70
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -1362,6 +1362,9 @@ void mlx5_eswitch_disable_sriov(struct mlx5_eswitch *esw, bool clear_vf)

		devl_rate_nodes_destroy(devlink);
	}
	/* Destroy legacy fdb when disabling sriov in legacy mode. */
	if (esw->mode == MLX5_ESWITCH_LEGACY)
		mlx5_eswitch_disable_locked(esw);

	esw->esw_funcs.num_vfs = 0;

+7 −0
Original line number Diff line number Diff line
@@ -3387,6 +3387,13 @@ static int esw_offloads_stop(struct mlx5_eswitch *esw,
	int err;

	esw->mode = MLX5_ESWITCH_LEGACY;

	/* If changing from switchdev to legacy mode without sriov enabled,
	 * no need to create legacy fdb.
	 */
	if (!mlx5_sriov_is_enabled(esw->dev))
		return 0;

	err = mlx5_eswitch_enable_locked(esw, MLX5_ESWITCH_IGNORE_NUM_VFS);
	if (err)
		NL_SET_ERR_MSG_MOD(extack, "Failed setting eswitch to legacy");