From: Jakub Kicinski <kuba@kernel.org>
To: tariqt@nvidia.com
Cc: Jakub Kicinski <kuba@kernel.org>,
cratiu@nvidia.com, saeedm@nvidia.com, cjubran@nvidia.com,
davem@davemloft.net, horms@kernel.org, linux-doc@vger.kernel.org,
mbloch@nvidia.com, moshe@nvidia.com, jiri@nvidia.com,
edumazet@google.com, gal@nvidia.com, andrew+netdev@lunn.ch,
donald.hunter@gmail.com, jiri@resnulli.us, krzk@kernel.org,
pabeni@redhat.com, linux-kernel@vger.kernel.org,
linux-rdma@vger.kernel.org, netdev@vger.kernel.org,
rdunlap@infradead.org, leon@kernel.org, corbet@lwn.net
Subject: Re: [net-next,V5,06/15] devlink: Decouple rate storage from associated devlink object
Date: Wed, 21 Jan 2026 19:39:57 -0800 [thread overview]
Message-ID: <20260122033957.2579085-1-kuba@kernel.org> (raw)
In-Reply-To: <1768895878-1637182-7-git-send-email-tariqt@nvidia.com>
This is an AI-generated review of your patch. The human sending this
email has considered the AI review valid, or at least plausible.
For local reproduction steps see https://netdev-ai.bots.linux.dev/ai-local.html
---
devlink: Decouple rate storage from associated devlink object
This patch introduces the concept of a "rate node devlink" to allow rates
from multiple devlink instances to be stored together. It updates all
rate node manipulation code to filter by devlink during iteration and
adds lock/unlock helpers (currently no-ops) for future locking support.
> diff --git a/net/devlink/rate.c b/net/devlink/rate.c
> index 0d68b5c477dc..ddbd0beec4b9 100644
> --- a/net/devlink/rate.c
> +++ b/net/devlink/rate.c
[ ... ]
> @@ -209,10 +235,12 @@ devlink_nl_rate_get_dump_one(struct sk_buff *msg, struct devlink *devlink,
> {
> struct devlink_nl_dump_state *state = devlink_dump_state(cb);
> struct devlink_rate *devlink_rate;
> + struct devlink *rate_devlink;
> int idx = 0;
> int err = 0;
>
> - list_for_each_entry(devlink_rate, &devlink->rate_list, list) {
> + rate_devlink = devl_rate_lock(devlink);
> + list_for_each_entry(devlink_rate, &rate_devlink->rate_list, list) {
> enum devlink_command cmd = DEVLINK_CMD_RATE_NEW;
> u32 id = NETLINK_CB(cb->skb).portid;
>
> @@ -220,6 +248,9 @@ devlink_nl_rate_get_dump_one(struct sk_buff *msg, struct devlink *devlink,
> idx++;
> continue;
> }
> + if (devlink_rate->devlink != devlink)
> + continue;
When this filter skips a non-matching entry, idx is not incremented.
However, state->idx is used to track position across netlink dump
resumptions and expects idx to reflect the actual position in the list.
Once cross-device rate nodes are enabled (later in this series), the list
can contain entries from multiple devlinks. If the dump requires multiple
netlink messages and non-matching entries exist between matching ones,
the idx tracking becomes inconsistent with the list position. This can
cause entries to be reported multiple times on dump resumption.
Should this continue statement also increment idx to maintain correct
position tracking?
> +
> err = devlink_nl_rate_fill(msg, devlink_rate, cmd, id,
> cb->nlh->nlmsg_seq, flags, NULL);
> if (err) {
> @@ -228,6 +259,7 @@ devlink_nl_rate_get_dump_one(struct sk_buff *msg, struct devlink *devlink,
> }
> idx++;
> }
> + devl_rate_unlock(devlink);
[ ... ]
--
pw-bot: cr
next prev parent reply other threads:[~2026-01-22 3:39 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-20 7:57 [PATCH net-next V5 00/15] devlink and mlx5: Support cross-function rate scheduling Tariq Toukan
2026-01-20 7:57 ` [PATCH net-next V5 01/15] documentation: networking: add shared devlink documentation Tariq Toukan
2026-01-20 7:57 ` [PATCH net-next V5 02/15] devlink: introduce shared devlink instance for PFs on same chip Tariq Toukan
2026-01-20 7:57 ` [PATCH net-next V5 03/15] devlink: Reverse locking order for nested instances Tariq Toukan
2026-01-20 7:57 ` [PATCH net-next V5 04/15] devlink: Add helpers to lock nested-in instances Tariq Toukan
2026-01-20 7:57 ` [PATCH net-next V5 05/15] devlink: Refactor devlink_rate_nodes_check Tariq Toukan
2026-01-20 7:57 ` [PATCH net-next V5 06/15] devlink: Decouple rate storage from associated devlink object Tariq Toukan
2026-01-22 3:39 ` Jakub Kicinski [this message]
2026-01-22 11:18 ` [net-next,V5,06/15] " Cosmin Ratiu
2026-01-20 7:57 ` [PATCH net-next V5 07/15] devlink: Add parent dev to devlink API Tariq Toukan
2026-01-20 7:57 ` [PATCH net-next V5 08/15] devlink: Allow parent dev for rate-set and rate-new Tariq Toukan
2026-01-20 7:57 ` [PATCH net-next V5 09/15] devlink: Allow rate node parents from other devlinks Tariq Toukan
2026-01-20 7:57 ` [PATCH net-next V5 10/15] net/mlx5: Add a shared devlink instance for PFs on same chip Tariq Toukan
2026-01-22 3:39 ` [net-next,V5,10/15] " Jakub Kicinski
2026-01-22 3:41 ` Jakub Kicinski
2026-01-22 7:42 ` [PATCH net-next V5 10/15] " Krzysztof Kozlowski
2026-01-22 11:13 ` Cosmin Ratiu
2026-01-20 7:57 ` [PATCH net-next V5 11/15] net/mlx5: Expose a function to clear a vport's parent Tariq Toukan
2026-01-22 3:40 ` [net-next,V5,11/15] " Jakub Kicinski
2026-01-22 3:42 ` Jakub Kicinski
2026-01-20 7:57 ` [PATCH net-next V5 12/15] net/mlx5: Store QoS sched nodes in the sh_devlink Tariq Toukan
2026-01-22 3:40 ` [net-next,V5,12/15] " Jakub Kicinski
2026-01-22 11:15 ` Cosmin Ratiu
2026-01-20 7:57 ` [PATCH net-next V5 13/15] net/mlx5: qos: Support cross-device tx scheduling Tariq Toukan
2026-01-20 7:57 ` [PATCH net-next V5 14/15] net/mlx5: qos: Enable cross-device scheduling Tariq Toukan
2026-01-20 7:57 ` [PATCH net-next V5 15/15] net/mlx5: Document devlink rates Tariq Toukan
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=20260122033957.2579085-1-kuba@kernel.org \
--to=kuba@kernel.org \
--cc=andrew+netdev@lunn.ch \
--cc=cjubran@nvidia.com \
--cc=corbet@lwn.net \
--cc=cratiu@nvidia.com \
--cc=davem@davemloft.net \
--cc=donald.hunter@gmail.com \
--cc=edumazet@google.com \
--cc=gal@nvidia.com \
--cc=horms@kernel.org \
--cc=jiri@nvidia.com \
--cc=jiri@resnulli.us \
--cc=krzk@kernel.org \
--cc=leon@kernel.org \
--cc=linux-doc@vger.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=pabeni@redhat.com \
--cc=rdunlap@infradead.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox