From: Shay Drory <shayd@nvidia.com>
To: <pabeni@redhat.com>
Cc: <tariqt@nvidia.com>, <andrew+netdev@lunn.ch>,
<davem@davemloft.net>, <edumazet@kernel.org>, <kuba@kernel.org>,
<netdev@vger.kernel.org>, <agoldberger@nvidia.com>,
<cjubran@nvidia.com>, <cratiu@nvidia.com>, <edwards@nvidia.com>,
<gal@nvidia.com>, <leon@kernel.org>,
<linux-kernel@vger.kernel.org>, <linux-rdma@vger.kernel.org>,
<mbloch@nvidia.com>, <moshe@nvidia.com>, <ohartoov@nvidia.com>,
<phaddad@nvidia.com>, <saeedm@nvidia.com>
Subject: Re: [PATCH net-next 05/15] net/mlx5: LAG, decouple iteration end-of-walk from MLX5_MAX_PORTS
Date: Tue, 10 Nov 2026 16:10:52 +0200 [thread overview]
Message-ID: <20261110141052.433725-1-shayd@nvidia.com> (raw)
In-Reply-To: <e15d78be-1e80-469d-96e1-dd83cd90a929@redhat.com>
On 10/11/2026 13:00, Paolo Abeni wrote:
> Hi,
>
> there are a couple of unanswered comments here...
>
> On 11/3/26 18:09, Tariq Toukan wrote:
> > @@ -2095,7 +2096,7 @@ static int mlx5_handle_changeupper_event(struct mlx5_lag *ldev,
> > break;
> > }
> > }
> > - if (i < MLX5_MAX_PORTS) {
> > + if (i < ldev->ports) {
>
> [medium]
> Should this compare against ldev->max_funcs, like the other converted call
> sites?
> The iterator's end-of-walk value is now ldev->max_funcs. That holds both in
> mlx5_get_next_lag_func() and in the mlx5_lag_for_each() condition.
> Indices are never compacted and max_funcs never shrinks. So a PORT-marked
> member can sit at an index in [ldev->ports, max_funcs) while the ldev still
> has ldev->ports members. One way to get there: more PFs than num_lag_ports
> join the ldev, and a lower-index one is removed later.
> In that case the inner loop finds the matching pf and breaks with
> i >= ldev->ports. idx has already been incremented, but this block is
> skipped, so the bond_status |= (1 << idx) and has_inactive updates are
> lost. The later check would then fail:
> is_in_lag = num_slaves == ldev->ports &&
> bond_status == GENMASK(ldev->ports - 1, 0);
> Wouldn't that leave this bond silently not offloaded?
> The old i < MLX5_MAX_PORTS check covered the whole index range that the old
> xa_alloc() limit allowed. This code is unchanged at the end of the series.
>
> This looks valid to me.
This is answered in the cover letter: mlx5 creates an ldev per sw_guid,
and PFs have a different sw_guid than VFs/SFs, so only PFs share this
ldev. The only case with more PFs than num_lag_ports in one ldev is SD,
and for SD the netdev notifier, and with it
mlx5_handle_changeupper_event(), is not registered. So a PORT-marked
member here always sits at an index below ldev->ports.
> > if (netif_is_bond_master(upper)) {
> > slave = bond_slave_get_rcu(ndev_tmp);
> > if (slave)
> > @@ -2360,13 +2361,16 @@ int mlx5_ldev_add_mdev(struct mlx5_lag *ldev,
> > if (!pf)
> > return -ENOMEM;
> >
> > - err = xa_alloc(&ldev->pfs, &idx, pf, XA_LIMIT(0, MLX5_MAX_PORTS - 1),
> > + err = xa_alloc(&ldev->pfs, &idx, pf, XA_LIMIT(0, U8_MAX - 1),
> > GFP_KERNEL);
>
> [high]
> Can this let member indices reach 8 or more while several arrays are still
> sized MLX5_MAX_PORTS?
>
> this is solved at the end of the series, so not really a problem.
>
> Note that there are more unanswered comments on patch 15/15.
>
> I think a v2 is need. For the future I suggest using smaller series:
> 15 non trivial patches will have increasingly hard time with AI
> reviews.
Ack, will prepare a v2.
> /P
next prev parent reply other threads:[~2026-11-10 14:11 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-11-03 17:09 [PATCH net-next 00/15] net/mlx5: LAG over VFs/SFs (virtual LAG) Tariq Toukan
2026-11-03 17:09 ` [PATCH net-next 01/15] net/mlx5: Distinguish VFs/SFs in the SW system image GUID for LAG grouping Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-09 17:22 ` Shay Drori
2026-11-03 17:09 ` [PATCH net-next 02/15] net/mlx5: LAG, select the MPESW master from the live member snapshot Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-03 17:09 ` [PATCH net-next 03/15] net/mlx5: LAG, skip phys LAG prerequisites for a virt LAG Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-03 17:09 ` [PATCH net-next 04/15] net/mlx5: LAG, treat virt LAG as a software managed LAG Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-03 17:09 ` [PATCH net-next 05/15] net/mlx5: LAG, decouple iteration end-of-walk from MLX5_MAX_PORTS Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-09 18:21 ` Shay Drori
2026-11-10 11:00 ` Paolo Abeni
2026-11-10 14:10 ` Shay Drory [this message]
2026-11-03 17:10 ` [PATCH net-next 06/15] net/mlx5: LAG, rename PF naming to fn Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-03 17:10 ` [PATCH net-next 07/15] net/mlx5: LAG, resolve affinity indices only in queue-affinity mode Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-03 17:10 ` [PATCH net-next 08/15] net/mlx5: LAG: replace fixed MLX5_MAX_PORTS arrays with dynamic allocation Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-09 18:26 ` Shay Drori
2026-11-03 17:10 ` [PATCH net-next 09/15] net/mlx5: LAG, drop MLX5_MAX_PORTS scratch array from device rescan Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-03 17:10 ` [PATCH net-next 10/15] net/mlx5: LAG, do not add a device to an already-active LAG Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-09 18:31 ` Shay Drori
2026-11-03 17:10 ` [PATCH net-next 11/15] net/mlx5: E-switch, add match-metadata allocator for nested VF/SF eswitches Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-10 9:31 ` Shay Drory
2026-11-03 17:10 ` [PATCH net-next 12/15] net/mlx5: E-switch, match master egress rule by vport metadata Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-10 9:36 ` Shay Drory
2026-11-03 17:10 ` [PATCH net-next 13/15] net/mlx5: E-switch, drop master egress rule under a SW vport LAG Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-03 17:10 ` [PATCH net-next 14/15] net/mlx5e: Register eswitch-manager VF/SF self-port with switch-id Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
2026-11-10 9:54 ` Shay Drory
2026-11-03 17:10 ` [PATCH net-next 15/15] net/mlx5: LAG, enable LAG over functions that do not represent a physical port Tariq Toukan
2026-11-04 17:13 ` sashiko-bot
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=20261110141052.433725-1-shayd@nvidia.com \
--to=shayd@nvidia.com \
--cc=agoldberger@nvidia.com \
--cc=andrew+netdev@lunn.ch \
--cc=cjubran@nvidia.com \
--cc=cratiu@nvidia.com \
--cc=davem@davemloft.net \
--cc=edumazet@kernel.org \
--cc=edwards@nvidia.com \
--cc=gal@nvidia.com \
--cc=kuba@kernel.org \
--cc=leon@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=mbloch@nvidia.com \
--cc=moshe@nvidia.com \
--cc=netdev@vger.kernel.org \
--cc=ohartoov@nvidia.com \
--cc=pabeni@redhat.com \
--cc=phaddad@nvidia.com \
--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.