On Mon, Oct 25, 2021 at 10:14 PM Ajit Khaparde <ajit.khapa...@broadcom.com> wrote: > > Rx ring for representors does not use aggregation rings for Rx. > Instead they use simple software buffers for handling Rx packets. > So there is no need to use the same cleanup routine as done by > the non-representor code path. > > Signed-off-by: Ajit Khaparde <ajit.khapa...@broadcom.com> > Acked-by: Kalesh AP <kalesh-anakkur.pura...@broadcom.com> > Acked-by: Somnath Kotur <somnath.ko...@broadcom.com> Patch applied to dpdk-next-net-brcm.
> --- > drivers/net/bnxt/bnxt_reps.c | 22 +++++++++++++++++++++- > 1 file changed, 21 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/bnxt/bnxt_reps.c b/drivers/net/bnxt/bnxt_reps.c > index 1c07db3ca9..92beea3558 100644 > --- a/drivers/net/bnxt/bnxt_reps.c > +++ b/drivers/net/bnxt/bnxt_reps.c > @@ -386,6 +386,26 @@ static int bnxt_vfr_alloc(struct rte_eth_dev *vfr_ethdev) > return rc; > } > > +static void bnxt_vfr_rx_queue_release_mbufs(struct bnxt_rx_queue *rxq) > +{ > + struct rte_mbuf **sw_ring; > + unsigned int i; > + > + if (!rxq || !rxq->rx_ring) > + return; > + > + sw_ring = rxq->rx_ring->rx_buf_ring; > + if (sw_ring) { > + for (i = 0; i < rxq->rx_ring->rx_ring_struct->ring_size; i++) > { > + if (sw_ring[i]) { > + if (sw_ring[i] != &rxq->fake_mbuf) > + rte_pktmbuf_free_seg(sw_ring[i]); > + sw_ring[i] = NULL; > + } > + } > + } > +} > + > static void bnxt_rep_free_rx_mbufs(struct bnxt_representor *rep_bp) > { > struct bnxt_rx_queue *rxq; > @@ -393,7 +413,7 @@ static void bnxt_rep_free_rx_mbufs(struct > bnxt_representor *rep_bp) > > for (i = 0; i < rep_bp->rx_nr_rings; i++) { > rxq = rep_bp->rx_queues[i]; > - bnxt_rx_queue_release_mbufs(rxq); > + bnxt_vfr_rx_queue_release_mbufs(rxq); > } > } > > -- > 2.30.1 (Apple Git-130) >