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>, Jiri Pirko <jiri@nvidia.com>,
	mbloch@nvidia.com, Adithya Jayachandran <ajayachandra@nvidia.com>
Subject: Re: [PATCH net-next V2 2/3] net/mlx5: MPFS, add support for dynamic enable/disable
Date: Sat, 8 Nov 2025 15:21:43 +0000	[thread overview]
Message-ID: <aQ9gB4lCBaK19bRo@horms.kernel.org> (raw)
In-Reply-To: <20251107000831.157375-3-saeed@kernel.org>

On Thu, Nov 06, 2025 at 04:08:30PM -0800, Saeed Mahameed wrote:
> From: Saeed Mahameed <saeedm@nvidia.com>
> 
> MPFS (Multi PF Switch) is enabled by default in Multi-Host environments,
> the driver keeps a list of desired unicast mac addresses of all vports
> (vfs/Sfs) and applied to HW via L2_table FW command.
> 
> Add API to dynamically apply the list of MACs to HW when needed for next
> patches, to utilize this new API in devlink eswitch active/in-active uAPI.
> 
> Issue: 4314625
> Change-Id: I185c144319e514f787811f556888e1b727bdbf35

nit: the issue and Change-Id should be dropped when upstreaming patches.

> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
> Signed-off-by: Adithya Jayachandran <ajayachandra@nvidia.com>
> Reviewed-by: Jiri Pirko <jiri@nvidia.com>
> ---
>  .../ethernet/mellanox/mlx5/core/lib/mpfs.c    | 115 +++++++++++++++---
>  .../ethernet/mellanox/mlx5/core/lib/mpfs.h    |   9 ++
>  2 files changed, 107 insertions(+), 17 deletions(-)
> 
> diff --git a/drivers/net/ethernet/mellanox/mlx5/core/lib/mpfs.c b/drivers/net/ethernet/mellanox/mlx5/core/lib/mpfs.c

...

> @@ -148,30 +151,34 @@ int mlx5_mpfs_add_mac(struct mlx5_core_dev *dev, u8 *mac)

...

> +	if (mpfs->enabled) {
> +		err = alloc_l2table_index(mpfs, &index);
> +		if (err)
> +			goto hash_del;
> +		err = set_l2table_entry_cmd(dev, index, mac);
> +		if (err)
> +			goto free_l2table_index;
> +		mlx5_core_dbg(dev, "MPFS entry %pM, set @index (%d)\n",
> +			      l2addr->node.addr, l2addr->index);

nit: the following patch updates the line above to:

			      l2addr->node.addr, index);

     I don't think that change belongs in the following patch.

...

> +int mlx5_mpfs_enable(struct mlx5_core_dev *dev)
> +{
> +	struct mlx5_mpfs *mpfs = dev->priv.mpfs;
> +	struct l2table_node *l2addr;
> +	struct hlist_node *n;
> +	int err = 0;
> +
> +	if (!mpfs)
> +		return -ENODEV;
> +
> +	mutex_lock(&mpfs->lock);
> +	if (mpfs->enabled)
> +		goto out;
> +	mpfs->enabled = true;
> +	mlx5_core_dbg(dev, "MPFS enabling mpfs\n");
> +
> +	mlx5_mpfs_foreach(l2addr, n, mpfs) {
> +		u32 index;
> +
> +		err = alloc_l2table_index(mpfs, &index);
> +		if (err) {
> +			mlx5_core_err(dev, "Failed to allocated MPFS index for %pM, err(%d)\n",
> +				      l2addr->node.addr, err);
> +			goto out;
> +		}
> +
> +		err = set_l2table_entry_cmd(dev, index, l2addr->node.addr);
> +		if (err) {
> +			mlx5_core_err(dev, "Failed to set MPFS l2table entry for %pM index=%d, err(%d)\n",
> +				      l2addr->node.addr, index, err);
> +			free_l2table_index(mpfs, index);
> +			goto out;
> +		}
> +
> +		l2addr->index = index;
> +		mlx5_core_dbg(dev, "MPFS entry %pM, set @index (%d)\n",
> +			      l2addr->node.addr, l2addr->index);
> +	}
> +out:
> +	mutex_unlock(&mpfs->lock);

I realise that error handling can be complex at best, and particularly
so when configuration ends up being partially applied. But I am wondering
if the cleanup here is sufficient.

In a similar vein, I also note that although this function returns an
error, it is ignored by callers which are added by the following patch.
Likewise for mlx5_esw_fdb_drop_create() which is also added by the
following patch.

> +	return err;
> +}

...

  reply	other threads:[~2025-11-08 15:21 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-11-07  0:08 [PATCH net-next V2 0/3] devlink eswitch inactive mode Saeed Mahameed
2025-11-07  0:08 ` [PATCH net-next V2 1/3] devlink: Introduce switchdev_inactive eswitch mode Saeed Mahameed
2025-11-07  0:08 ` [PATCH net-next V2 2/3] net/mlx5: MPFS, add support for dynamic enable/disable Saeed Mahameed
2025-11-08 15:21   ` Simon Horman [this message]
2025-11-08 19:39     ` Saeed Mahameed
2025-11-11 14:27       ` Simon Horman
2025-11-07  0:08 ` [PATCH net-next V2 3/3] net/mlx5: E-Switch, support eswitch inactive mode Saeed Mahameed
2025-11-08  2:28   ` Jakub Kicinski
2025-11-08  4:53     ` Saeed Mahameed

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=aQ9gB4lCBaK19bRo@horms.kernel.org \
    --to=horms@kernel.org \
    --cc=ajayachandra@nvidia.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=gal@nvidia.com \
    --cc=jiri@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.