Re: [PATCH net-next v7 02/11] rtnetlink: Pack newlink() params into struct

Jakub Kicinski
2025-01-08T17:31:41Z

On Wed, 8 Jan 2025 16:36:26 +0800 Xiao Liang wrote:
> On Wed, Jan 8, 2025 at 4:38 AM Jakub Kicinski <kuba@kernel.org> wrote:
> >
> > On Sat, 4 Jan 2025 20:57:23 +0800 Xiao Liang wrote:
> > > -static int amt_newlink(struct net *net, struct net_device *dev,
> > > - struct nlattr *tb[], struct nlattr *data[],
> > > - struct netlink_ext_ack *extack)
> > > +static int amt_newlink(struct rtnl_newlink_params *params)
> > > {
> > > - struct amt_dev *amt = netdev_priv(dev);
> > > + struct netlink_ext_ack *extack = params->extack;
> > > + struct net_device *dev = params->dev;
> > > + struct nlattr **data = params->data;
> > > + struct nlattr **tb = params->tb;
> > > + struct net *net = params->net;
> > > + struct amt_dev *amt;
> >
> > IMHO you packed a little too much into the struct.
> > Could you take the dev and the extack back out?
>
> Sure. I thought you were suggesting packing them all
> in review of v3...

Sorry about that, I wasn't very clear :(

What I had in mind was similar to how we define ethtool ops,
(especially the more recent ones which have extack)
for example:

int (*set_mm)(struct net_device *dev, struct ethtool_mm_cfg *cfg,
struct netlink_ext_ack *extack);