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

From: Jakub Kicinski <[email-masked]>
Date: Wed, 8 Jan 2025 09:31:39 -0800

On Wed, 8 Jan 2025 16:36:26 +0800 Xiao Liang wrote:
> On Wed, Jan 8, 2025 at 4:38 AM Jakub Kicinski <[email-masked]> 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);