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: sta...@dpdk.org Signed-off-by: Xiao Zhang <xiao.zh...@intel.com> --- 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 5925e49..49c5371 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); } } -- 2.7.4