Re: [PATCH net-next v4 2/8] net: ethtool: netlink: Allow per-netdevice DUMP operations

From: Jakub Kicinski
Date: Tue Mar 25 2025 - 17:15:30 EST


On Tue, 25 Mar 2025 12:27:06 +0100 Kory Maincent wrote:
> > @@ -636,10 +659,10 @@ static int ethnl_default_start(struct netlink_callback
> > *cb) }
> >
> > ret = ethnl_default_parse(req_info, &info->info, ops, false);
> > - if (req_info->dev) {
> > - /* We ignore device specification in dump requests but as the
> > - * same parser as for non-dump (doit) requests is used, it
> > - * would take reference to the device if it finds one
> > + if (req_info->dev && !ops->allow_pernetdev_dump) {
> > + /* We ignore device specification in unfiltered dump requests
> > + * but as the same parser as for non-dump (doit) requests is
> > + * used, it would take reference to the device if it finds
>
> This means the dump will have a different behavior in case of filtered dump
> (allow_pernetdev_dump) or standard dump.
> The standard dump will drop the interface device so it will dump all interfaces
> even if one is specified.
> The filtered dump will dump only the specified interface.
> Maybe it would be nice to have the same behavior for the dump for all the
> ethtool command.
> Even if this change modify the behavior of the dump for all the ethtool commands
> it won't be an issue as the filtered dump did not exist before, so I suppose it
> won't break anything. IMHO it is safer to do it now than later, if existing
> ethtool command adds support for filtered dump.
> We should find another way to know the parser is called from dump or doit.

Let's try. We can probably make required_dev attr of
ethnl_parse_header_dev_get() a three state one: require, allow, reject?

Part of the problem is that ethtool is not converted to split ops, so
do and dump share the same parsing policy. But that's too painful to
fix now, I think.
--
pw-bot: cr