net/mlx5: Enable 4 ports multiport E-switch
[ Upstream commit e738e355045237ee8802cb2b31a8ed6f4b7ac534 ] enable_mpesw() assumed only 2 ports are available, fix this by removing that assumption and looping through the existing lag ports to enable multi-port E-switch for cards with more than 2 ports. Signed-off-by: Shay Drory <shayd@nvidia.com> Reviewed-by: Mark Bloch <mbloch@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com> Stable-dep-of: 0f06228d4a2d ("net/mlx5: Reload only IB representors upon lag disable/enable") Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
3398a40dcc
commit
66a5f6e09c
@ -65,12 +65,12 @@ err_metadata:
|
||||
return err;
|
||||
}
|
||||
|
||||
#define MLX5_LAG_MPESW_OFFLOADS_SUPPORTED_PORTS 2
|
||||
#define MLX5_LAG_MPESW_OFFLOADS_SUPPORTED_PORTS 4
|
||||
static int enable_mpesw(struct mlx5_lag *ldev)
|
||||
{
|
||||
struct mlx5_core_dev *dev0 = ldev->pf[MLX5_LAG_P1].dev;
|
||||
struct mlx5_core_dev *dev1 = ldev->pf[MLX5_LAG_P2].dev;
|
||||
int err;
|
||||
int i;
|
||||
|
||||
if (ldev->mode != MLX5_LAG_MODE_NONE)
|
||||
return -EINVAL;
|
||||
@ -98,11 +98,11 @@ static int enable_mpesw(struct mlx5_lag *ldev)
|
||||
|
||||
dev0->priv.flags &= ~MLX5_PRIV_FLAGS_DISABLE_IB_ADEV;
|
||||
mlx5_rescan_drivers_locked(dev0);
|
||||
err = mlx5_eswitch_reload_reps(dev0->priv.eswitch);
|
||||
if (!err)
|
||||
err = mlx5_eswitch_reload_reps(dev1->priv.eswitch);
|
||||
if (err)
|
||||
goto err_rescan_drivers;
|
||||
for (i = 0; i < ldev->ports; i++) {
|
||||
err = mlx5_eswitch_reload_reps(ldev->pf[i].dev->priv.eswitch);
|
||||
if (err)
|
||||
goto err_rescan_drivers;
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@ -112,8 +112,8 @@ err_rescan_drivers:
|
||||
mlx5_deactivate_lag(ldev);
|
||||
err_add_devices:
|
||||
mlx5_lag_add_devices(ldev);
|
||||
mlx5_eswitch_reload_reps(dev0->priv.eswitch);
|
||||
mlx5_eswitch_reload_reps(dev1->priv.eswitch);
|
||||
for (i = 0; i < ldev->ports; i++)
|
||||
mlx5_eswitch_reload_reps(ldev->pf[i].dev->priv.eswitch);
|
||||
mlx5_mpesw_metadata_cleanup(ldev);
|
||||
return err;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user