From d6956e92390c8fb2fcbd0f3363169b88a012154c Mon Sep 17 00:00:00 2001 From: Xiao Zhang Date: Wed, 11 Sep 2019 01:41:18 +0800 Subject: [PATCH] net/e1000: fix memory barrier usage in Tx Use rte_cio_wmb instead of rte_wmb when writing TX descriptor since it's CIO memory. Replace rte_io_wmb and E1000_PCI_REG_WRITE_RELAXED with E1000_PCI_REG_WRITE since it has rte_io_wmb inside, which will be more clear. Fixes: 1fc9701238ed ("net/e1000: fix i219 hang on reset/close") Cc: stable@dpdk.org Signed-off-by: Xiao Zhang Reviewed-by: Gavin Hu Reviewed-by: Xiaolong Ye --- drivers/net/e1000/em_rxtx.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/drivers/net/e1000/em_rxtx.c b/drivers/net/e1000/em_rxtx.c index 5925e49064..49c53712a2 100644 --- a/drivers/net/e1000/em_rxtx.c +++ b/drivers/net/e1000/em_rxtx.c @@ -2049,13 +2049,12 @@ e1000_flush_tx_ring(struct rte_eth_dev *dev) tx_desc->lower.data = rte_cpu_to_le_32(txd_lower | size); tx_desc->upper.data = 0; - rte_wmb(); + rte_cio_wmb(); txq->tx_tail++; if (txq->tx_tail == txq->nb_tx_desc) txq->tx_tail = 0; - rte_io_wmb(); tdt_reg_addr = E1000_PCI_REG_ADDR(hw, E1000_TDT(i)); - E1000_PCI_REG_WRITE_RELAXED(tdt_reg_addr, txq->tx_tail); + E1000_PCI_REG_WRITE(tdt_reg_addr, txq->tx_tail); usec_delay(250); } }