Commit e738e355 authored by Shay Drory's avatar Shay Drory Committed by Saeed Mahameed

net/mlx5: Enable 4 ports multiport E-switch

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: default avatarShay Drory <shayd@nvidia.com>
Reviewed-by: default avatarMark Bloch <mbloch@nvidia.com>
Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
parent e0cc92fd
...@@ -65,12 +65,12 @@ static int mlx5_mpesw_metadata_set(struct mlx5_lag *ldev) ...@@ -65,12 +65,12 @@ static int mlx5_mpesw_metadata_set(struct mlx5_lag *ldev)
return err; 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) static int enable_mpesw(struct mlx5_lag *ldev)
{ {
struct mlx5_core_dev *dev0 = ldev->pf[MLX5_LAG_P1].dev; 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 err;
int i;
if (ldev->mode != MLX5_LAG_MODE_NONE) if (ldev->mode != MLX5_LAG_MODE_NONE)
return -EINVAL; return -EINVAL;
...@@ -98,11 +98,11 @@ static int enable_mpesw(struct mlx5_lag *ldev) ...@@ -98,11 +98,11 @@ static int enable_mpesw(struct mlx5_lag *ldev)
dev0->priv.flags &= ~MLX5_PRIV_FLAGS_DISABLE_IB_ADEV; dev0->priv.flags &= ~MLX5_PRIV_FLAGS_DISABLE_IB_ADEV;
mlx5_rescan_drivers_locked(dev0); mlx5_rescan_drivers_locked(dev0);
err = mlx5_eswitch_reload_reps(dev0->priv.eswitch); for (i = 0; i < ldev->ports; i++) {
if (!err) err = mlx5_eswitch_reload_reps(ldev->pf[i].dev->priv.eswitch);
err = mlx5_eswitch_reload_reps(dev1->priv.eswitch); if (err)
if (err) goto err_rescan_drivers;
goto err_rescan_drivers; }
return 0; return 0;
...@@ -112,8 +112,8 @@ static int enable_mpesw(struct mlx5_lag *ldev) ...@@ -112,8 +112,8 @@ static int enable_mpesw(struct mlx5_lag *ldev)
mlx5_deactivate_lag(ldev); mlx5_deactivate_lag(ldev);
err_add_devices: err_add_devices:
mlx5_lag_add_devices(ldev); mlx5_lag_add_devices(ldev);
mlx5_eswitch_reload_reps(dev0->priv.eswitch); for (i = 0; i < ldev->ports; i++)
mlx5_eswitch_reload_reps(dev1->priv.eswitch); mlx5_eswitch_reload_reps(ldev->pf[i].dev->priv.eswitch);
mlx5_mpesw_metadata_cleanup(ldev); mlx5_mpesw_metadata_cleanup(ldev);
return err; return err;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment