Hi Willem, Thanks for the review.
> -----Original Message----- > From: Willem de Bruijn <willemdebruijn.ker...@gmail.com> > Sent: Monday, November 2, 2020 7:01 PM > To: George Cherian <gcher...@marvell.com> > Cc: Network Development <netdev@vger.kernel.org>; linux-kernel <linux- > ker...@vger.kernel.org>; Jakub Kicinski <k...@kernel.org>; David Miller > <da...@davemloft.net>; Sunil Kovvuri Goutham > <sgout...@marvell.com>; Linu Cherian <lcher...@marvell.com>; > Geethasowjanya Akula <gak...@marvell.com>; masahi...@kernel.org > Subject: Re: [net-next PATCH 1/3] octeontx2-af: Add devlink suppoort > to af driver > > On Mon, Nov 2, 2020 at 12:07 AM George Cherian > <george.cher...@marvell.com> wrote: > > > > Add devlink support to AF driver. Basic devlink support is added. > > Currently info_get is the only supported devlink ops. > > > > devlink ouptput looks like this > > # devlink dev > > pci/0002:01:00.0 > > # devlink dev info > > pci/0002:01:00.0: > > driver octeontx2-af > > versions: > > fixed: > > mbox version: 9 > > > > Signed-off-by: Sunil Kovvuri Goutham <sgout...@marvell.com> > > Signed-off-by: Jerin Jacob <jer...@marvell.com> > > Signed-off-by: George Cherian <george.cher...@marvell.com> > > > diff --git a/drivers/net/ethernet/marvell/octeontx2/af/rvu.h > > b/drivers/net/ethernet/marvell/octeontx2/af/rvu.h > > index 5ac9bb12415f..c112b299635d 100644 > > --- a/drivers/net/ethernet/marvell/octeontx2/af/rvu.h > > +++ b/drivers/net/ethernet/marvell/octeontx2/af/rvu.h > > @@ -12,7 +12,10 @@ > > #define RVU_H > > > > #include <linux/pci.h> > > +#include <net/devlink.h> > > + > > #include "rvu_struct.h" > > +#include "rvu_devlink.h" > > #include "common.h" > > #include "mbox.h" > > > > @@ -372,10 +375,10 @@ struct rvu { > > struct npc_kpu_profile_adapter kpu; > > > > struct ptp *ptp; > > - > > accidentally removed this line? Yes. > > > #ifdef CONFIG_DEBUG_FS > > struct rvu_debugfs rvu_dbg; > > #endif > > + struct rvu_devlink *rvu_dl; > > }; > > > > +int rvu_register_dl(struct rvu *rvu) > > +{ > > + struct rvu_devlink *rvu_dl; > > + struct devlink *dl; > > + int err; > > + > > + rvu_dl = kzalloc(sizeof(*rvu_dl), GFP_KERNEL); > > + if (!rvu_dl) > > + return -ENOMEM; > > + > > + dl = devlink_alloc(&rvu_devlink_ops, sizeof(struct rvu_devlink)); > > + if (!dl) { > > + dev_warn(rvu->dev, "devlink_alloc failed\n"); > > + return -ENOMEM; > > rvu_dl not freed on error. Thanks for pointing out, will address in v2. > > This happens a couple of times in these patches Will fix it. > > Is the intermediate struct needed, or could you embed the fields directly into > rvu and use container_of to get from devlink to struct rvu? Even if needed, > perhaps easier to embed the struct into rvu rather than a pointer. Currently only 2 hardware blocks are supported NIX and NPA. Error reporting for more HW blocks will be added, that’s the reason for the intermediate struct. > > > + } > > + > > + err = devlink_register(dl, rvu->dev); > > + if (err) { > > + dev_err(rvu->dev, "devlink register failed with error > > %d\n", err); > > + devlink_free(dl); > > + return err; > > + } > > + > > + rvu_dl->dl = dl; > > + rvu_dl->rvu = rvu; > > + rvu->rvu_dl = rvu_dl; > > + return 0; > > +} > > + > > +void rvu_unregister_dl(struct rvu *rvu) { > > + struct rvu_devlink *rvu_dl = rvu->rvu_dl; > > + struct devlink *dl = rvu_dl->dl; > > + > > + if (!dl) > > + return; > > + > > + devlink_unregister(dl); > > + devlink_free(dl); > > here too Yes, will fix in v2. Regards, -George