All of lore.kernel.org
 help / color / mirror / Atom feed
From: Simon Horman <horms@kernel.org>
To: Saeed Mahameed <saeed@kernel.org>
Cc: "David S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Eric Dumazet <edumazet@google.com>,
	Saeed Mahameed <saeedm@nvidia.com>,
	netdev@vger.kernel.org, Tariq Toukan <tariqt@nvidia.com>,
	Gal Pressman <gal@nvidia.com>,
	Leon Romanovsky <leonro@nvidia.com>,
	mbloch@nvidia.com, Adithya Jayachandran <ajayachandra@nvidia.com>
Subject: Re: [PATCH net-next V2 3/7] net/mlx5: E-Switch, Add support for adjacent functions vports discovery
Date: Thu, 28 Aug 2025 12:34:17 +0100	[thread overview]
Message-ID: <20250828113417.GB10519@horms.kernel.org> (raw)
In-Reply-To: <20250827044516.275267-4-saeed@kernel.org>

On Tue, Aug 26, 2025 at 09:45:12PM -0700, Saeed Mahameed wrote:
> From: Adithya Jayachandran <ajayachandra@nvidia.com>
> 
> Adding driver support to query adjacent functions vports, AKA
> delegated vports.
> 
> Adjacent functions can delegate their sriov vfs to other sibling PF in
> the system, to be managed by the eswitch capable sibling PF.
> E.g, ECPF to Host PF, multi host PF between each other, etc.
> 
> Only supported in switchdev mode.
> 
> Signed-off-by: Adithya Jayachandran <ajayachandra@nvidia.com>
> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>

...

> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.c

...

> +static int
> +mlx5_eswitch_load_adj_vf_vports(struct mlx5_eswitch *esw,
> +				enum mlx5_eswitch_vport_event enabled_events)
> +{
> +	struct mlx5_vport *vport;
> +	unsigned long i;
> +	int err;
> +
> +	mlx5_esw_for_each_vf_vport(esw, i, vport, U16_MAX) {
> +		if (!vport->adjacent)
> +			continue;
> +		err = mlx5_eswitch_load_pf_vf_vport(esw, vport->vport,
> +						    enabled_events);
> +		if (err)
> +			goto unload_adj_vf_vport;
> +	}
> +
> +	return 0;
> +
> +unload_adj_vf_vport:
> +	mlx5_eswitch_unload_adj_vf_vports(esw);
> +	return err;
> +}
> +
>  int mlx5_eswitch_load_vf_vports(struct mlx5_eswitch *esw, u16 num_vfs,
>  				enum mlx5_eswitch_vport_event enabled_events)
>  {
> @@ -1345,7 +1382,15 @@ mlx5_eswitch_enable_pf_vf_vports(struct mlx5_eswitch *esw,
>  					  enabled_events);
>  	if (ret)
>  		goto vf_err;
> +
> +	/* Enable adjacent VF vports */
> +	ret = mlx5_eswitch_load_adj_vf_vports(esw, enabled_events);
> +	if (ret)
> +		goto unload_adj_vf_vports;
> +
>  	return 0;
> +unload_adj_vf_vports:
> +	mlx5_eswitch_unload_adj_vf_vports(esw);
>  

Hi Adithya and Saeed,

mlx5_eswitch_load_adj_vf_vports() already unwinds on error,
calling mlx5_eswitch_unload_adj_vf_vports().

While resources allocated by the preceding call to
mlx5_eswitch_load_vf_vports() (just before this hunk) seem to be leaked.

So I wonder if the above two lines should be:

unload_vf_vports:
	mlx5_eswitch_unload_vf_vports(esw, num_vfs);

>  vf_err:
>  	if (mlx5_core_ec_sriov_enabled(esw->dev))

...

> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
> index cfd6b1b8c6f4..9f8bb397eae5 100644
> --- a/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
> +++ b/drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
> @@ -216,6 +216,7 @@ struct mlx5_vport {
>  	u32                     metadata;
>  	int                     vhca_id;
>  
> +	bool adjacent; /* delegated vhca from adjacent function */
>  	struct mlx5_vport_info  info;
>  
>  	/* Protected with the E-Switch qos domain lock. The Vport QoS can
> @@ -384,6 +385,7 @@ struct mlx5_eswitch {
>  
>  	struct mlx5_esw_bridge_offloads *br_offloads;
>  	struct mlx5_esw_offload offloads;
> +	u32 last_vport_idx; /* ++ every time a vport is created */

The comment above documents one operation that can occur
on this field. But the code also performs others: decrement and set.

So perhaps this is more appropriate?

	u32 last_vport_idx; /* Number of vports created */

Or dropping the comment entirely: it seems obvious enough.

>  	int                     mode;
>  	u16                     manager_vport;
>  	u16                     first_host_vport;

...

  reply	other threads:[~2025-08-28 11:34 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-08-27  4:45 [PATCH net-next V2 0/7] E-Switch vport sharing & delegation Saeed Mahameed
2025-08-27  4:45 ` [PATCH net-next V2 1/7] net/mlx5: FS, Convert vport acls root namespaces to xarray Saeed Mahameed
2025-08-28 12:39   ` Simon Horman
2025-08-27  4:45 ` [PATCH net-next V2 2/7] net/mlx5: E-Switch, Move vport acls root namespaces creation to eswitch Saeed Mahameed
2025-08-28 12:40   ` Simon Horman
2025-08-27  4:45 ` [PATCH net-next V2 3/7] net/mlx5: E-Switch, Add support for adjacent functions vports discovery Saeed Mahameed
2025-08-28 11:34   ` Simon Horman [this message]
2025-08-29 21:59     ` Saeed Mahameed
2025-08-27  4:45 ` [PATCH net-next V2 4/7] net/mlx5: E-Switch, Create acls root namespace for adjacent vports Saeed Mahameed
2025-08-28 12:40   ` Simon Horman
2025-08-27  4:45 ` [PATCH net-next V2 5/7] net/mlx5: E-Switch, Register representors " Saeed Mahameed
2025-08-28 12:40   ` Simon Horman
2025-08-27  4:45 ` [PATCH net-next V2 6/7] net/mlx5: E-switch, Set representor attributes for adjacent VFs Saeed Mahameed
2025-08-28 12:41   ` Simon Horman
2025-08-27  4:45 ` [PATCH net-next V2 7/7] net/mlx5: {DR,HWS}, Use the cached vhca_id for this device Saeed Mahameed
2025-08-28 12:41   ` Simon Horman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250828113417.GB10519@horms.kernel.org \
    --to=horms@kernel.org \
    --cc=ajayachandra@nvidia.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=gal@nvidia.com \
    --cc=kuba@kernel.org \
    --cc=leonro@nvidia.com \
    --cc=mbloch@nvidia.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=saeed@kernel.org \
    --cc=saeedm@nvidia.com \
    --cc=tariqt@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.