mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
net/mlx5: E-switch, derive manager vport from device capability
mlx5_eswitch_manager_vport() hardcoded the e-switch manager vport as either the ECPF or the host PF. Read esw_manager_vport_number from the e-switch capability when esw_manager_vport_number_valid is set, so the manager vport can be a VF - a prerequisite for VFs acting as e-switch managers. Keep the previous mapping as fallback when the capability does not report a number. Signed-off-by: Shay Drory <shayd@nvidia.com> Reviewed-by: Moshe Shemesh <moshe@nvidia.com> Reviewed-by: Akiva Goldberger <agoldberger@nvidia.com> Signed-off-by: Tariq Toukan <tariqt@nvidia.com> Link: https://patch.msgid.link/20260923103830.1183-10-tariqt@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
9d608a40c2
commit
d451adde02
|
|
@ -2460,13 +2460,20 @@ static int mlx5_esw_vports_init(struct mlx5_eswitch *esw)
|
|||
}
|
||||
}
|
||||
|
||||
if (mlx5_ecpf_vport_exists(dev) ||
|
||||
mlx5_core_is_ecpf_esw_manager(dev)) {
|
||||
if (mlx5_ecpf_vport_exists(dev)) {
|
||||
err = mlx5_esw_vport_alloc(esw, idx, MLX5_VPORT_ECPF);
|
||||
if (err)
|
||||
goto err;
|
||||
idx++;
|
||||
}
|
||||
|
||||
if (!xa_load(&esw->vports, esw->manager_vport)) {
|
||||
err = mlx5_esw_vport_alloc(esw, idx, esw->manager_vport);
|
||||
if (err)
|
||||
goto err;
|
||||
idx++;
|
||||
}
|
||||
|
||||
err = mlx5_esw_vport_alloc(esw, idx, MLX5_VPORT_UPLINK);
|
||||
if (err)
|
||||
goto err;
|
||||
|
|
|
|||
|
|
@ -222,6 +222,9 @@ static inline bool is_mdev_switchdev_mode(struct mlx5_core_dev *dev)
|
|||
/* The returned number is valid only when the dev is eswitch manager. */
|
||||
static inline u16 mlx5_eswitch_manager_vport(struct mlx5_core_dev *dev)
|
||||
{
|
||||
if (MLX5_CAP_ESW(dev, esw_manager_vport_number_valid))
|
||||
return MLX5_CAP_ESW(dev, esw_manager_vport_number);
|
||||
|
||||
return mlx5_core_is_ecpf_esw_manager(dev) ?
|
||||
MLX5_VPORT_ECPF : MLX5_VPORT_HOST_PF;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user