mbox series

[net-next,0/3] Add devlink and devlink health reporters to

Message ID 20201102050649.2188434-1-george.cherian@marvell.com
Headers show
Series Add devlink and devlink health reporters to | expand

Message

George Cherian Nov. 2, 2020, 5:06 a.m. UTC
Add basic devlink and devlink health reporters.
Devlink health reporters are added for NPA and NIX blocks.
These reporters report the error count in respective blocks.

Address Jakub's comment to add devlink support for error reporting.
https://www.spinics.net/lists/netdev/msg670712.html


George Cherian (3):
  octeontx2-af: Add devlink suppoort to af driver
  octeontx2-af: Add devlink health reporters for NPA
  octeontx2-af: Add devlink health reporters for NIX

 .../net/ethernet/marvell/octeontx2/Kconfig    |   1 +
 .../ethernet/marvell/octeontx2/af/Makefile    |   3 +-
 .../net/ethernet/marvell/octeontx2/af/rvu.c   |   9 +-
 .../net/ethernet/marvell/octeontx2/af/rvu.h   |   5 +-
 .../marvell/octeontx2/af/rvu_devlink.c        | 875 ++++++++++++++++++
 .../marvell/octeontx2/af/rvu_devlink.h        |  67 ++
 .../marvell/octeontx2/af/rvu_struct.h         |  33 +
 7 files changed, 990 insertions(+), 3 deletions(-)
 create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.c
 create mode 100644 drivers/net/ethernet/marvell/octeontx2/af/rvu_devlink.h

Comments

Willem de Bruijn Nov. 2, 2020, 1:31 p.m. UTC | #1
On Mon, Nov 2, 2020 at 12:07 AM George Cherian
<george.cherian@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 <sgoutham@marvell.com>

> Signed-off-by: Jerin Jacob <jerinj@marvell.com>

> Signed-off-by: George Cherian <george.cherian@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?

>  #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.

This happens a couple of times in these patches

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.

> +       }

> +

> +       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
Jakub Kicinski Nov. 2, 2020, 6 p.m. UTC | #2
On Mon, 2 Nov 2020 10:36:46 +0530 George Cherian wrote:
> Add basic devlink and devlink health reporters.

> Devlink health reporters are added for NPA and NIX blocks.

> These reporters report the error count in respective blocks.

> 

> Address Jakub's comment to add devlink support for error reporting.

> https://www.spinics.net/lists/netdev/msg670712.html


Please make sure you fix all new warnings when built with W=1 C=1.