From e7d8658369036ee7ddc74a74ee38581a978d6647 Mon Sep 17 00:00:00 2001 From: raymax2023 Date: Mon, 27 Nov 2023 15:09:36 +0800 Subject: [PATCH] Update qdma_rxtx.c If rte_mempool_get_bulk fails too many times, it will cause the mbuf to be used up. In qdma_recv_pkts_st , it will cause nb_pkts_avail has always been 0 and will not continue to receive packages in the future. Modify to nb_pkts_avail when is 0, if you need to apply for mbuf, continue to apply. --- QDMA/DPDK/drivers/net/qdma/qdma_rxtx.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/QDMA/DPDK/drivers/net/qdma/qdma_rxtx.c b/QDMA/DPDK/drivers/net/qdma/qdma_rxtx.c index 186c1bb31..4193ad3bf 100755 --- a/QDMA/DPDK/drivers/net/qdma/qdma_rxtx.c +++ b/QDMA/DPDK/drivers/net/qdma/qdma_rxtx.c @@ -923,7 +923,7 @@ uint16_t qdma_recv_pkts_st(struct qdma_rx_queue *rxq, if (nb_pkts_avail == 0) { PMD_DRV_LOG(DEBUG, "%s(): %d: nb_pkts_avail = 0\n", __func__, __LINE__); - return 0; + goto fresh; } nb_pkts = RTE_MIN(nb_pkts, RTE_MIN(nb_pkts_avail, QDMA_MAX_BURST_SIZE)); @@ -954,7 +954,7 @@ uint16_t qdma_recv_pkts_st(struct qdma_rx_queue *rxq, } count_pkts = prepare_packets(rxq, rx_pkts, nb_pkts); - +fresh: c2h_pidx = rxq->q_pidx_info.pidx; pending_desc = rxq->rx_tail - c2h_pidx - 1; if (rxq->rx_tail < (c2h_pidx + 1))