From 1193edaa828725bead4d54fa7c1214f105d203c4 Mon Sep 17 00:00:00 2001 From: Charles Myers Date: Thu, 13 Apr 2017 12:15:24 -1000 Subject: [PATCH] net/mlx4: fix Rx after mbuf alloc failure Fixes issue where mlx4 driver stops receiving packets when mbuf allocation fails in mlx4_rx_burst(). This issue appears to be caused because the code doesn't recycle the existing mbuf to the sges array when mbuf allocation fails as is done in the code right above it which handles (wc.status != IBV_WC_SUCCESS). Copying the code from the above case fixes the issue. Fixes: acac55f16412 ("mlx4: use MOFED 3.0 fast verbs interface for Rx operations") Cc: stable@dpdk.org Signed-off-by: Charles Myers Acked-by: Adrien Mazarguil --- drivers/net/mlx4/mlx4.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/mlx4/mlx4.c b/drivers/net/mlx4/mlx4.c index a1363c8c90..07f8fcd54f 100644 --- a/drivers/net/mlx4/mlx4.c +++ b/drivers/net/mlx4/mlx4.c @@ -3170,6 +3170,8 @@ mlx4_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) /* Increase out of memory counters. */ ++rxq->stats.rx_nombuf; ++rxq->priv->dev->data->rx_mbuf_alloc_failed; + /* Add SGE to array for repost. */ + sges[i] = elt->sge; goto repost; } -- 2.20.1