]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
net/mlx5: E-Switch, Fix switching to switchdev mode in MPV
authorPatrisious Haddad <phaddad@nvidia.com>
Tue, 3 Dec 2024 20:49:18 +0000 (22:49 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 5 Dec 2024 03:43:46 +0000 (19:43 -0800)
Fix the mentioned commit change for MPV mode, since in MPV mode the IB
device is shared between different core devices, so under this change
when moving both devices simultaneously to switchdev mode the IB device
removal and re-addition can race with itself causing unexpected behavior.

In such case do rescan_drivers() only once in order to add the ethernet
representor auxiliary device, and skip adding and removing IB devices.

Fixes: ab85ebf43723 ("net/mlx5: E-switch, refactor eswitch mode change")
Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/20241203204920.232744-5-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c

index 5213d5b2cad58dd12719e1faaa4528c81cc8addc..d5b42b3a19fdf776060e679edb8c714f165e1c4d 100644 (file)
@@ -2335,8 +2335,8 @@ out_free:
 static void esw_mode_change(struct mlx5_eswitch *esw, u16 mode)
 {
        mlx5_devcom_comp_lock(esw->dev->priv.hca_devcom_comp);
-
-       if (esw->dev->priv.flags & MLX5_PRIV_FLAGS_DISABLE_IB_ADEV) {
+       if (esw->dev->priv.flags & MLX5_PRIV_FLAGS_DISABLE_IB_ADEV ||
+           mlx5_core_mp_enabled(esw->dev)) {
                esw->mode = mode;
                mlx5_rescan_drivers_locked(esw->dev);
                mlx5_devcom_comp_unlock(esw->dev->priv.hca_devcom_comp);