Re: [PATCH rdma-rc] RDMA/bnxt_re: Fix stats counters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, Jul 11, 2021 at 5:30 PM Leon Romanovsky <leon@xxxxxxxxxx> wrote:
>
> On Sun, Jul 11, 2021 at 01:34:50AM -0700, Selvin Xavier wrote:
> > From: Naresh Kumar PBS <nareshkumar.pbs@xxxxxxxxxxxx>
> >
> > Stats counters are not incrementing in some adapter versions
> > with newer FW. This is due to the stats context length mismatch
> > between FW and driver. Since L2 driver updates the length correctly,
> > use the stats length from L2 driver while allocating the DMA'able
> > memory and creating the stats context.
> >
> > Fixes:9d6b648c311(bnxt_en: Update firmware interface spec to 1.10.1.65)
>
> This is wrong fixes line.
>
> I recommend to add the line below to your gitaliases file
>         fixes = "!git --no-pager log --abbrev=12 -1 --format='Fixes: %h (\"%s\")'"
>
> and it will give you nice git fixes command with ready to copy string:
> ➜  kernel git:(rdma-next) git fixes 9d6b648c311
> Fixes: 9d6b648c3112 ("bnxt_en: Update firmware interface spec to 1.10.1.65.")
>
Posting a v2. thanks

>
> > Signed-off-by: Naresh Kumar PBS <nareshkumar.pbs@xxxxxxxxxxxx>
> > Signed-off-by: Selvin Xavier <selvin.xavier@xxxxxxxxxxxx>
> > ---
> >  drivers/infiniband/hw/bnxt_re/main.c      |  4 +++-
> >  drivers/infiniband/hw/bnxt_re/qplib_res.c | 10 ++++------
> >  drivers/infiniband/hw/bnxt_re/qplib_res.h |  1 +
> >  3 files changed, 8 insertions(+), 7 deletions(-)
> >
> > diff --git a/drivers/infiniband/hw/bnxt_re/main.c b/drivers/infiniband/hw/bnxt_re/main.c
> > index 04621ba..1fadca8 100644
> > --- a/drivers/infiniband/hw/bnxt_re/main.c
> > +++ b/drivers/infiniband/hw/bnxt_re/main.c
> > @@ -119,6 +119,7 @@ static int bnxt_re_setup_chip_ctx(struct bnxt_re_dev *rdev, u8 wqe_mode)
> >       if (!chip_ctx)
> >               return -ENOMEM;
> >       chip_ctx->chip_num = bp->chip_num;
> > +     chip_ctx->hw_stats_size = bp->hw_ring_stats_size;
> >
> >       rdev->chip_ctx = chip_ctx;
> >       /* rest members to follow eventually */
> > @@ -507,6 +508,7 @@ static int bnxt_re_net_stats_ctx_alloc(struct bnxt_re_dev *rdev,
> >                                      dma_addr_t dma_map,
> >                                      u32 *fw_stats_ctx_id)
> >  {
> > +     struct bnxt_qplib_chip_ctx *chip_ctx = rdev->chip_ctx;
> >       struct hwrm_stat_ctx_alloc_output resp = {0};
> >       struct hwrm_stat_ctx_alloc_input req = {0};
> >       struct bnxt_en_dev *en_dev = rdev->en_dev;
> > @@ -523,7 +525,7 @@ static int bnxt_re_net_stats_ctx_alloc(struct bnxt_re_dev *rdev,
> >       bnxt_re_init_hwrm_hdr(rdev, (void *)&req, HWRM_STAT_CTX_ALLOC, -1, -1);
> >       req.update_period_ms = cpu_to_le32(1000);
> >       req.stats_dma_addr = cpu_to_le64(dma_map);
> > -     req.stats_dma_length = cpu_to_le16(sizeof(struct ctx_hw_stats_ext));
> > +     req.stats_dma_length = cpu_to_le16(chip_ctx->hw_stats_size);
> >       req.stat_ctx_flags = STAT_CTX_ALLOC_REQ_STAT_CTX_FLAGS_ROCE;
> >       bnxt_re_fill_fw_msg(&fw_msg, (void *)&req, sizeof(req), (void *)&resp,
> >                           sizeof(resp), DFLT_HWRM_CMD_TIMEOUT);
> > diff --git a/drivers/infiniband/hw/bnxt_re/qplib_res.c b/drivers/infiniband/hw/bnxt_re/qplib_res.c
> > index fa78783..72be4fb 100644
> > --- a/drivers/infiniband/hw/bnxt_re/qplib_res.c
> > +++ b/drivers/infiniband/hw/bnxt_re/qplib_res.c
> > @@ -56,6 +56,7 @@
> >  static void bnxt_qplib_free_stats_ctx(struct pci_dev *pdev,
> >                                     struct bnxt_qplib_stats *stats);
> >  static int bnxt_qplib_alloc_stats_ctx(struct pci_dev *pdev,
> > +                                   struct bnxt_qplib_chip_ctx *cctx,
> >                                     struct bnxt_qplib_stats *stats);
> >
> >  /* PBL */
> > @@ -559,7 +560,7 @@ int bnxt_qplib_alloc_ctx(struct bnxt_qplib_res *res,
> >               goto fail;
> >  stats_alloc:
> >       /* Stats */
> > -     rc = bnxt_qplib_alloc_stats_ctx(res->pdev, &ctx->stats);
> > +     rc = bnxt_qplib_alloc_stats_ctx(res->pdev, res->cctx, &ctx->stats);
> >       if (rc)
> >               goto fail;
> >
> > @@ -888,15 +889,12 @@ static void bnxt_qplib_free_stats_ctx(struct pci_dev *pdev,
> >  }
> >
> >  static int bnxt_qplib_alloc_stats_ctx(struct pci_dev *pdev,
> > +                                   struct bnxt_qplib_chip_ctx *cctx,
> >                                     struct bnxt_qplib_stats *stats)
> >  {
> >       memset(stats, 0, sizeof(*stats));
> >       stats->fw_id = -1;
> > -     /* 128 byte aligned context memory is required only for 57500.
> > -      * However making this unconditional, it does not harm previous
> > -      * generation.
> > -      */
> > -     stats->size = ALIGN(sizeof(struct ctx_hw_stats), 128);
> > +     stats->size = cctx->hw_stats_size;
> >       stats->dma = dma_alloc_coherent(&pdev->dev, stats->size,
> >                                       &stats->dma_map, GFP_KERNEL);
> >       if (!stats->dma) {
> > diff --git a/drivers/infiniband/hw/bnxt_re/qplib_res.h b/drivers/infiniband/hw/bnxt_re/qplib_res.h
> > index 7a1ab38..58bad6f 100644
> > --- a/drivers/infiniband/hw/bnxt_re/qplib_res.h
> > +++ b/drivers/infiniband/hw/bnxt_re/qplib_res.h
> > @@ -60,6 +60,7 @@ struct bnxt_qplib_chip_ctx {
> >       u16     chip_num;
> >       u8      chip_rev;
> >       u8      chip_metal;
> > +     u16     hw_stats_size;
> >       struct bnxt_qplib_drv_modes modes;
> >  };
> >
> > --
> > 2.5.5
> >

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux