[PATCH net-next 09/12] net/mlx5: Register SF resource on satellite PF ports

From: Tariq Toukan

Date: Thu May 21 2026 - 07:25:29 EST


From: Or Har-Toov <ohartoov@xxxxxxxxxx>

Extend port-level resource registration to satellite PF vports.

Signed-off-by: Or Har-Toov <ohartoov@xxxxxxxxxx>
Signed-off-by: Tariq Toukan <tariqt@xxxxxxxxxx>
---
.../mellanox/mlx5/core/esw/devlink_port.c | 31 +++++++++++++------
1 file changed, 21 insertions(+), 10 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c b/drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c
index 05d89769b917..6e50311faa27 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/esw/devlink_port.c
@@ -176,14 +176,28 @@ static const struct devlink_port_ops mlx5_esw_dl_sf_port_ops = {
};

static int mlx5_esw_devlink_port_res_register(struct mlx5_eswitch *esw,
- struct devlink_port *dl_port)
+ struct devlink_port *dl_port,
+ u16 vport_num)
{
struct devlink_resource_size_params size_params;
struct mlx5_core_dev *dev = esw->dev;
u16 max_sfs, sf_base_id;
int err;

- err = mlx5_esw_sf_max_hpf_functions(dev, &max_sfs, &sf_base_id);
+ if (vport_num != MLX5_VPORT_HOST_PF &&
+ !mlx5_esw_is_spf_vport(esw, vport_num))
+ return 0;
+
+ if (vport_num == MLX5_VPORT_HOST_PF) {
+ err = mlx5_esw_sf_max_hpf_functions(dev, &max_sfs,
+ &sf_base_id);
+ } else {
+ int spf_idx = mlx5_esw_spf_vport_to_idx(esw, vport_num);
+
+ err = mlx5_esw_sf_max_spf_functions(dev, spf_idx, &max_sfs,
+ &sf_base_id);
+ }
+
if (err)
return err;

@@ -232,14 +246,11 @@ int mlx5_esw_offloads_devlink_port_register(struct mlx5_eswitch *esw, struct mlx
if (err)
goto rate_err;

- if (vport_num == MLX5_VPORT_HOST_PF) {
- err = mlx5_esw_devlink_port_res_register(esw,
- &dl_port->dl_port);
- if (err)
- mlx5_core_dbg(dev,
- "Failed to register port resources: %d\n",
- err);
- }
+ err = mlx5_esw_devlink_port_res_register(esw, &dl_port->dl_port,
+ vport_num);
+ if (err)
+ mlx5_core_dbg(dev, "Failed to register port resources: %d\n",
+ err);

return 0;

--
2.44.0