From 8e7bd48f7578f3a12776ce054b60c18ef8c34069 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Thu, 30 May 2013 10:12:35 -0700 Subject: [PATCH] igb: restore workaround errata with wthresh on 82576 The 82576 has known issues which require the write threshold to be set to 1. See: http://download.intel.com/design/network/specupdt/82576_SPECUPDATE.pdf If not then single packets will hang in transmit ring until more arrive. Simple tests like ping will fail. The workaround was in the wrong file (commit a30ebfbb8c3a). Move it in igb one to restore original patch (7e9e49feea). Signed-off-by: Stephen Hemminger Signed-off-by: Thomas Monjalon --- lib/librte_pmd_e1000/em_rxtx.c | 5 ----- lib/librte_pmd_e1000/igb_rxtx.c | 4 ++++ 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/lib/librte_pmd_e1000/em_rxtx.c b/lib/librte_pmd_e1000/em_rxtx.c index 475471bf0e..78c0c44bfc 100644 --- a/lib/librte_pmd_e1000/em_rxtx.c +++ b/lib/librte_pmd_e1000/em_rxtx.c @@ -1275,8 +1275,6 @@ eth_em_tx_queue_setup(struct rte_eth_dev *dev, txq->pthresh = tx_conf->tx_thresh.pthresh; txq->hthresh = tx_conf->tx_thresh.hthresh; txq->wthresh = tx_conf->tx_thresh.wthresh; - if (txq->wthresh > 0 && hw->mac.type == e1000_82576) - txq->wthresh = 1; txq->queue_id = queue_idx; txq->port_id = dev->data->port_id; @@ -1402,9 +1400,6 @@ eth_em_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) - rxq->wthresh = 1; - rxq->rx_free_thresh = rx_conf->rx_free_thresh; rxq->queue_id = queue_idx; rxq->port_id = dev->data->port_id; diff --git a/lib/librte_pmd_e1000/igb_rxtx.c b/lib/librte_pmd_e1000/igb_rxtx.c index 42c1f7b64c..4608595437 100644 --- a/lib/librte_pmd_e1000/igb_rxtx.c +++ b/lib/librte_pmd_e1000/igb_rxtx.c @@ -1238,6 +1238,8 @@ eth_igb_tx_queue_setup(struct rte_eth_dev *dev, txq->pthresh = tx_conf->tx_thresh.pthresh; txq->hthresh = tx_conf->tx_thresh.hthresh; txq->wthresh = tx_conf->tx_thresh.wthresh; + if (txq->wthresh > 0 && hw->mac.type == e1000_82576) + txq->wthresh = 1; txq->queue_id = queue_idx; txq->reg_idx = (uint16_t)((RTE_ETH_DEV_SRIOV(dev).active == 0) ? queue_idx : RTE_ETH_DEV_SRIOV(dev).def_pool_q_idx + queue_idx); @@ -1357,6 +1359,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) + rxq->wthresh = 1; rxq->drop_en = rx_conf->rx_drop_en; rxq->rx_free_thresh = rx_conf->rx_free_thresh; rxq->queue_id = queue_idx; -- 2.20.1