From: Maxime Chevallier <maxime.chevallier@bootlin.com>
To: davem@davemloft.net, Andrew Lunn <andrew@lunn.ch>,
Jakub Kicinski <kuba@kernel.org>,
Eric Dumazet <edumazet@google.com>,
Paolo Abeni <pabeni@redhat.com>,
Heiner Kallweit <hkallweit1@gmail.com>
Cc: "Maxime Chevallier" <maxime.chevallier@bootlin.com>,
netdev@vger.kernel.org, linux-kernel@vger.kernel.org,
thomas.petazzoni@bootlin.com,
linux-arm-kernel@lists.infradead.org,
"Christophe Leroy" <christophe.leroy@csgroup.eu>,
"Herve Codina" <herve.codina@bootlin.com>,
"Florian Fainelli" <f.fainelli@gmail.com>,
"Russell King" <linux@armlinux.org.uk>,
"Vladimir Oltean" <vladimir.oltean@nxp.com>,
"Köry Maincent" <kory.maincent@bootlin.com>,
"Oleksij Rempel" <o.rempel@pengutronix.de>,
"Simon Horman" <horms@kernel.org>,
"Romain Gantois" <romain.gantois@bootlin.com>,
"Piergiorgio Beruto" <piergiorgio.beruto@gmail.com>
Subject: [PATCH net-next v4 0/8] net: ethtool: Introduce ethnl dump helpers
Date: Mon, 24 Mar 2025 11:40:02 +0100 [thread overview]
Message-ID: <20250324104012.367366-1-maxime.chevallier@bootlin.com> (raw)
Hi everyone,
This is V4 for the ethnl dump support, allowing better handling of
per-phy dump but also any other dump operation that needs to dump more
than one message per netdev.
Changes in V4:
- Don't grab rcu_read_lock when we already have a refcounter netdev on
the filtered dump path (Paolo)
- Move the dump_all stuff in a dedicated helper (Paolo)
- Added patch 1 to set the dev in ctx->req_info
Changes in V3:
- Fixed some typos and xmas tree issues
- Added a missing check for EOPNOTSUPP in patch 1
- Added missing kdoc
- Added missing comments in phy_reply_size
Changes in V2:
- Rebased on the netdev_lock work by Stanislav and the fixes from Eric
- Fixed a bissectability issue
- Fixed kdoc for the new ethnl ops and fields
V1: https://lore.kernel.org/netdev/20250305141938.319282-1-maxime.chevallier@bootlin.com/
V2: https://lore.kernel.org/netdev/20250308155440.267782-1-maxime.chevallier@bootlin.com/
V3: https://lore.kernel.org/netdev/20250313182647.250007-1-maxime.chevallier@bootlin.com/
As of today when using ethnl's default ops, the DUMP requests will
simply perform a GET for each netdev.
That hits limitations for commands that may return multiple messages for
a single netdev, such as :
- RSS (listing contexts)
- All PHY-specific commands (PLCA, PSE-PD, phy)
- tsinfo (one item for the netdev + one per phy)
Commands that need a non-default DUMP support have to re-implement
->dumpit() themselves, which prevents using most of ethnl's internal
circuitry.
This series therefore introduces a better support for dump operations in
ethnl.
The patches 1 and 2 introduce the support for filtered DUMPs, where an
ifindex/ifname can be passed in the request header for the DUMP
operation. This is for when we want to dump everything a netdev
supports, but without doing so for every single netdev. ethtool's
"--show-phys ethX" option for example performs a filtered dump.
Patch 3 introduces 3 new ethnl ops :
->dump_start() to initialize a dump context
->dump_one_dev(), that can be implemented per-command to dump
everything on a given netdev
->dump_done() to release the context
The default behaviour for dumps remains the same, calling the whole
->doit() path for each netdev.
Patch 4 introduces a set of ->dump_start(), ->dump_one_dev() and
->dump_done() callback implementations that can simply be plugged into
the existing commands that list objects per-phy, making the
phy-targeting command behaviour more coherent.
Patch 5 uses that new set of helpers to rewrite the phy.c support, which
now uses the regulat ethnl_ops instead of fully custom genl ops. This
one is the hardest to review, sorry about that, I couldn't really manage
to incrementally rework that file :(
Patches 6 and 7 are where the new dump infra shines, adding per-netdev
per-phy dump support for PLCA and PSE-PD.
We could also consider converting tsinfo/tsconfig, rss and tunnels to
these new ->dump_***() operations as well, but that's out of this
series' scope.
Thanks,
Maxime
Maxime Chevallier (8):
net: ethtool: Set the req_info->dev on DUMP requests for each dev
net: ethtool: netlink: Allow per-netdevice DUMP operations
net: ethtool: netlink: Rename ethnl_default_dump_one
net: ethtool: netlink: Introduce command-specific dump_one_dev
net: ethtool: netlink: Introduce per-phy DUMP helpers
net: ethtool: phy: Convert the PHY_GET command to generic phy dump
net: ethtool: plca: Use per-PHY DUMP operations
net: ethtool: pse-pd: Use per-PHY DUMP operations
net/ethtool/netlink.c | 185 ++++++++++++++++++-----
net/ethtool/netlink.h | 47 +++++-
net/ethtool/phy.c | 344 ++++++++++++------------------------------
net/ethtool/plca.c | 12 ++
net/ethtool/pse-pd.c | 6 +
5 files changed, 310 insertions(+), 284 deletions(-)
--
2.48.1
next reply other threads:[~2025-03-24 10:42 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-03-24 10:40 Maxime Chevallier [this message]
2025-03-24 10:40 ` [PATCH net-next v4 1/8] net: ethtool: Set the req_info->dev on DUMP requests for each dev Maxime Chevallier
2025-03-25 11:03 ` Kory Maincent
2025-03-24 10:40 ` [PATCH net-next v4 2/8] net: ethtool: netlink: Allow per-netdevice DUMP operations Maxime Chevallier
2025-03-25 11:27 ` Kory Maincent
2025-03-25 21:15 ` Jakub Kicinski
2025-03-25 21:22 ` Jakub Kicinski
2025-03-26 7:59 ` Maxime Chevallier
2025-03-26 10:29 ` Kory Maincent
2025-03-26 11:26 ` Maxime Chevallier
2025-03-24 10:40 ` [PATCH net-next v4 3/8] net: ethtool: netlink: Rename ethnl_default_dump_one Maxime Chevallier
2025-03-25 13:08 ` Kory Maincent
2025-03-25 21:16 ` Jakub Kicinski
2025-03-26 7:54 ` Maxime Chevallier
2025-03-24 10:40 ` [PATCH net-next v4 4/8] net: ethtool: netlink: Introduce command-specific dump_one_dev Maxime Chevallier
2025-03-25 13:23 ` Kory Maincent
2025-03-24 10:40 ` [PATCH net-next v4 5/8] net: ethtool: netlink: Introduce per-phy DUMP helpers Maxime Chevallier
2025-03-25 13:34 ` Kory Maincent
2025-03-24 10:40 ` [PATCH net-next v4 6/8] net: ethtool: phy: Convert the PHY_GET command to generic phy dump Maxime Chevallier
2025-03-24 10:40 ` [PATCH net-next v4 7/8] net: ethtool: plca: Use per-PHY DUMP operations Maxime Chevallier
2025-03-24 10:40 ` [PATCH net-next v4 8/8] net: ethtool: pse-pd: " Maxime Chevallier
2025-03-25 13:35 ` Kory Maincent
2025-03-25 21:31 ` [PATCH net-next v4 0/8] net: ethtool: Introduce ethnl dump helpers Jakub Kicinski
2025-03-26 7:52 ` Maxime Chevallier
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=20250324104012.367366-1-maxime.chevallier@bootlin.com \
--to=maxime.chevallier@bootlin.com \
--cc=andrew@lunn.ch \
--cc=christophe.leroy@csgroup.eu \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=herve.codina@bootlin.com \
--cc=hkallweit1@gmail.com \
--cc=horms@kernel.org \
--cc=kory.maincent@bootlin.com \
--cc=kuba@kernel.org \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=netdev@vger.kernel.org \
--cc=o.rempel@pengutronix.de \
--cc=pabeni@redhat.com \
--cc=piergiorgio.beruto@gmail.com \
--cc=romain.gantois@bootlin.com \
--cc=thomas.petazzoni@bootlin.com \
--cc=vladimir.oltean@nxp.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.