From cfaf45237c852c51c377adb1620f0bb71bd1db0b Mon Sep 17 00:00:00 2001 From: Wenzhuo Lu Date: Tue, 5 Apr 2016 09:10:00 +0800 Subject: [PATCH] igb: fix i350 VF Rx A problem is found on i350 VF. We found TX will happen once per 4 packets. If only 1~3 packets are received, they will not be forwarded. But the real problem is on RX side. The reason is the default RX write-back threshold is changed to 4, so every first 3 packets may be hung there. This patch checks the RX wthresh when setting up the RX queue, and forces it to be 1, so every packet can be handled immediately. Fixes: 4a41c17dba18 ("igb: set default thresholds based on MAC type") Signed-off-by: Wenzhuo Lu Acked-by: Konstantin Ananyev --- drivers/net/e1000/igb_rxtx.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/e1000/igb_rxtx.c b/drivers/net/e1000/igb_rxtx.c index 529dba4cf6..4a987e3cc0 100644 --- a/drivers/net/e1000/igb_rxtx.c +++ b/drivers/net/e1000/igb_rxtx.c @@ -1466,7 +1466,8 @@ eth_igb_rx_queue_setup(struct rte_eth_dev *dev, rxq->pthresh = rx_conf->rx_thresh.pthresh; rxq->hthresh = rx_conf->rx_thresh.hthresh; rxq->wthresh = rx_conf->rx_thresh.wthresh; - if (rxq->wthresh > 0 && hw->mac.type == e1000_82576) + if (rxq->wthresh > 0 && + (hw->mac.type == e1000_82576 || hw->mac.type == e1000_vfadapt_i350)) rxq->wthresh = 1; rxq->drop_en = rx_conf->rx_drop_en; rxq->rx_free_thresh = rx_conf->rx_free_thresh; -- 2.20.1