On Thu, Jan 14, 2021 at 09:19:43AM -0800, Jakub Kicinski wrote:
> On Thu, 14 Jan 2021 12:27:43 +0200 Vladimir Oltean wrote:
> > On Wed, Jan 13, 2021 at 07:30:33PM -0800, Jakub Kicinski wrote:
> > > On Mon, 11 Jan 2021 19:43:14 +0200 Vladimir Oltean wrote:
> > > > +struct ocelot_devlink_private {
> > > > +       struct ocelot *ocelot;
> > > > +};
> > >
> > > I don't think you ever explained to me why you don't put struct ocelot
> > > in the priv.
> > >
> > > - ocelot = devm_kzalloc(&pdev->dev, sizeof(*ocelot), GFP_KERNEL);
> > > - if (!ocelot)
> > > + devlink = devlink_alloc(&ocelot_devlink_ops, sizeof(*ocelot));
> > > + if (!devlink)
> > >                  return -ENOMEM;
> > > + ocelot = devlink_priv(ocelot->devlink);
> >
> > Because that's not going to be all? The error path handling and teardown
> > all need to change, because I no longer use device-managed allocation,
> > and I wanted to avoid that.
>
> Come on, is it really hard enough to warrant us exchanging multiple
> emails? Having driver structure in devlink priv is the standard way
> of handling this, there's value in uniformity.

I did as you requested in v5 anyway. It does not save me of having to
keep a devlink pointer in struct ocelot though, due to the fact that the
layout with struct devlink being a container of struct ocelot is not
common between the DSA felix driver and the switchdev ocelot driver. So
much for uniformity.

Reply via email to