net/bnxt: fix to advance producer index

Message ID 20200520173918.13969-1-kalesh-anakkur.purayil@broadcom.com (mailing list archive)
State Accepted, archived
Delegated to: Ajit Khaparde
Headers
Series net/bnxt: fix to advance producer index |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/travis-robot success Travis build: passed
ci/Intel-compilation fail Compilation issues
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-nxp-Performance success Performance Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-testing fail Testing issues

Commit Message

Kalesh A P May 20, 2020, 5:39 p.m. UTC
  From: Rahul Gupta <rahul.gupta@broadcom.com>

When a queue is started after deferred_start, then increment raw_prod
irrespective of new mbuf is allocated or old mbufs are used.

Fixes: d256c73c1122 ("net/bnxt: fix memory leak during queue restart")
Cc: stable@dpdk.org

Signed-off-by: Rahul Gupta <rahul.gupta@broadcom.com>
Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
---
 drivers/net/bnxt/bnxt_rxr.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
  

Comments

Ajit Khaparde May 20, 2020, 10:08 p.m. UTC | #1
On Wed, May 20, 2020 at 10:23 AM Kalesh A P <
kalesh-anakkur.purayil@broadcom.com> wrote:

> From: Rahul Gupta <rahul.gupta@broadcom.com>
>
> When a queue is started after deferred_start, then increment raw_prod
> irrespective of new mbuf is allocated or old mbufs are used.
>
> Fixes: d256c73c1122 ("net/bnxt: fix memory leak during queue restart")
> Cc: stable@dpdk.org
>
> Signed-off-by: Rahul Gupta <rahul.gupta@broadcom.com>
> Signed-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>
> Reviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>
> Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
>
Patch applied to dpdk-next-net-brcm. Thanks


> ---
>  drivers/net/bnxt/bnxt_rxr.c | 8 ++++----
>  1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
> index d2955ba..ee1acb1 100644
> --- a/drivers/net/bnxt/bnxt_rxr.c
> +++ b/drivers/net/bnxt/bnxt_rxr.c
> @@ -987,9 +987,9 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq)
>                                             rxq->queue_id, i,
> ring->ring_size);
>                                 break;
>                         }
> -                       rxr->rx_prod = prod;
> -                       prod = RING_NEXT(rxr->rx_ring_struct, prod);
>                 }
> +               rxr->rx_prod = prod;
> +               prod = RING_NEXT(rxr->rx_ring_struct, prod);
>         }
>
>         ring = rxr->ag_ring_struct;
> @@ -1005,9 +1005,9 @@ int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq)
>                                             rxq->queue_id, i,
> ring->ring_size);
>                                 break;
>                         }
> -                       rxr->ag_prod = prod;
> -                       prod = RING_NEXT(rxr->ag_ring_struct, prod);
>                 }
> +               rxr->ag_prod = prod;
> +               prod = RING_NEXT(rxr->ag_ring_struct, prod);
>         }
>         PMD_DRV_LOG(DEBUG, "AGG Done!\n");
>
> --
> 2.10.1
>
>
  

Patch

diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c
index d2955ba..ee1acb1 100644
--- a/drivers/net/bnxt/bnxt_rxr.c
+++ b/drivers/net/bnxt/bnxt_rxr.c
@@ -987,9 +987,9 @@  int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq)
 					    rxq->queue_id, i, ring->ring_size);
 				break;
 			}
-			rxr->rx_prod = prod;
-			prod = RING_NEXT(rxr->rx_ring_struct, prod);
 		}
+		rxr->rx_prod = prod;
+		prod = RING_NEXT(rxr->rx_ring_struct, prod);
 	}
 
 	ring = rxr->ag_ring_struct;
@@ -1005,9 +1005,9 @@  int bnxt_init_one_rx_ring(struct bnxt_rx_queue *rxq)
 					    rxq->queue_id, i, ring->ring_size);
 				break;
 			}
-			rxr->ag_prod = prod;
-			prod = RING_NEXT(rxr->ag_ring_struct, prod);
 		}
+		rxr->ag_prod = prod;
+		prod = RING_NEXT(rxr->ag_ring_struct, prod);
 	}
 	PMD_DRV_LOG(DEBUG, "AGG Done!\n");