Re: [PATCH net-next v2 1/7] net: ethtool: netlink: Allow per-netdevice DUMP operations
From: Kory Maincent <kory.maincent@bootlin.com>
Date: 2025-03-10 10:58:58
Also in:
lkml, netdev
On Sat, 8 Mar 2025 16:54:33 +0100 Maxime Chevallier [off-list ref] wrote:
quoted hunk ↗ jump to hunk
We have a number of netlink commands in the ethnl family that may have multiple objects to dump even for a single net_device, including : - PLCA, PSE-PD, phy: one message per PHY device - tsinfo: one message per timestamp source (netdev + phys) - rss: One per RSS context To get this behaviour, these netlink commands need to roll a custom ->dumpit(). To prepare making per-netdev DUMP more generic in ethnl, introduce a member in the ethnl ops to indicate if a given command may allow pernetdev DUMPs (also referred to as filtered DUMPs). Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com> --- V2: - Rebase - Fix kdoc - Fix bissectabilitu by using the right function names net/ethtool/netlink.c | 45 ++++++++++++++++++++++++++++--------------- net/ethtool/netlink.h | 2 ++ 2 files changed, 31 insertions(+), 16 deletions(-)diff --git a/net/ethtool/netlink.c b/net/ethtool/netlink.c index 70834947f474..11e4122b7707 100644 --- a/net/ethtool/netlink.c +++ b/net/ethtool/netlink.c@@ -586,21 +586,34 @@ static int ethnl_default_dumpit(struct sk_buff *skb, int ret = 0; rcu_read_lock(); - for_each_netdev_dump(net, dev, ctx->pos_ifindex) { - dev_hold(dev); + if (ctx->req_info->dev) { + dev = ctx->req_info->dev; rcu_read_unlock(); - - ret = ethnl_default_dump_one(skb, dev, ctx,genl_info_dump(cb)); - + /* Filtered DUMP request targeted to a single netdev. We already + * hold a ref to the netdev from ->start() + */ + ret = ethnl_default_dump_one(skb, dev, ctx, + genl_info_dump(cb)); rcu_read_lock(); - dev_put(dev); - - if (ret < 0 && ret != -EOPNOTSUPP) { - if (likely(skb->len)) - ret = skb->len; - break;
You are not checking -EOPNOTSUPP, so you can return this error in the ctx->req_info->dev condition. I am not sure about the policy but do we want to report the EOPNOTSUPP error in the dump command instead of simply returning nothing. Regards, -- Köry Maincent, Bootlin Embedded Linux and kernel engineering https://bootlin.com