diff options
author | Xiao Zhang <xiao.zhang@intel.com> | 2019-09-11 01:41:18 +0800 |
---|---|---|
committer | Ferruh Yigit <ferruh.yigit@intel.com> | 2019-09-20 10:19:41 +0200 |
commit | d6956e92390c8fb2fcbd0f3363169b88a012154c (patch) | |
tree | 5630f7e9ea3084aae6da46884551e71ad8c82a37 | |
parent | 675f65dc660805eff1953e3dfb6242ec076a9444 (diff) | |
download | dpdk-d6956e92390c8fb2fcbd0f3363169b88a012154c.zip dpdk-d6956e92390c8fb2fcbd0f3363169b88a012154c.tar.gz dpdk-d6956e92390c8fb2fcbd0f3363169b88a012154c.tar.xz |
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 <xiao.zhang@intel.com>
Reviewed-by: Gavin Hu <gavin.hu@arm.com>
Reviewed-by: Xiaolong Ye <xiaolong.ye@intel.com>
-rw-r--r-- | drivers/net/e1000/em_rxtx.c | 5 |
1 files 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); } } |