The driver internal variable to track the next consumer index on the Rx ring was not being set if there was an mbuf allocation failure. In that scenario, eventually it would fall out of sync with the actual consumer index and raise a false alarm on Thor needlessly causing a segmentation fault with testpmd
Fixes: 03c8f2fe111c ("net/bnxt: detect bad opaque in Rx completion") Cc: sta...@dpdk.org Signed-off-by: Somnath Kotur <somnath.ko...@broadcom.com> Signed-off-by: Ajit Khaparde <ajit.khapa...@broadcom.com> Reviewed-by: Ajit Khaparde <ajit.khapa...@broadcom.com> Reviewed-by: Kalesh Anakkur Purayil <kalesh-anakkur.pura...@broadcom.com> --- drivers/net/bnxt/bnxt_rxr.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c index 8bc8ddc353..e461500ceb 100644 --- a/drivers/net/bnxt/bnxt_rxr.c +++ b/drivers/net/bnxt/bnxt_rxr.c @@ -1008,6 +1008,7 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt, goto rx; } rxr->rx_raw_prod = raw_prod; +rx: rxr->rx_next_cons = RING_IDX(rxr->rx_ring_struct, RING_NEXT(cons)); if (BNXT_TRUFLOW_EN(bp) && (BNXT_VF_IS_TRUSTED(bp) || BNXT_PF(bp)) && @@ -1026,7 +1027,6 @@ static int bnxt_rx_pkt(struct rte_mbuf **rx_pkt, * All MBUFs are allocated with the same size under DPDK, * no optimization for rx_copy_thresh */ -rx: *rx_pkt = mbuf; next_rx: -- 2.28.0.497.g54e85e7