From: Long Wu <long...@corigine.com> If the Rx loop is broken and PMD does not update the descriptor, packets will can not be received successfully.
Fixes: 766d51c9ce29 ("net/nfp: merge receive function") Cc: chaoyong...@corigine.com Cc: sta...@dpdk.org Signed-off-by: Long Wu <long...@corigine.com> Reviewed-by: Chaoyong He <chaoyong...@corigine.com> Reviewed-by: Peng Zhang <peng.zh...@corigine.com> --- drivers/net/nfp/nfp_rxtx.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/net/nfp/nfp_rxtx.c b/drivers/net/nfp/nfp_rxtx.c index 5094bbf145..3840e2372c 100644 --- a/drivers/net/nfp/nfp_rxtx.c +++ b/drivers/net/nfp/nfp_rxtx.c @@ -765,15 +765,6 @@ nfp_net_recv_pkts(void *rx_queue, /* Checking the checksum flag */ nfp_net_rx_cksum(rxq, rxds, mb); - if (meta.port_id == 0) { - rx_pkts[avail++] = mb; - } else if (nfp_flower_pf_dispatch_pkts(hw, mb, meta.port_id)) { - avail_multiplexed++; - } else { - rte_pktmbuf_free(mb); - break; - } - /* Now resetting and updating the descriptor */ rxds->vals[0] = 0; rxds->vals[1] = 0; @@ -786,6 +777,15 @@ nfp_net_recv_pkts(void *rx_queue, rxq->rd_p++; if (unlikely(rxq->rd_p == rxq->rx_count)) /* Wrapping */ rxq->rd_p = 0; + + if (meta.port_id == 0) { + rx_pkts[avail++] = mb; + } else if (nfp_flower_pf_dispatch_pkts(hw, mb, meta.port_id)) { + avail_multiplexed++; + } else { + rte_pktmbuf_free(mb); + break; + } } if (nb_hold == 0) -- 2.39.1