summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiao Zhang <xiao.zhang@intel.com>2019-09-11 01:41:18 +0800
committerFerruh Yigit <ferruh.yigit@intel.com>2019-09-20 10:19:41 +0200
commitd6956e92390c8fb2fcbd0f3363169b88a012154c (patch)
tree5630f7e9ea3084aae6da46884551e71ad8c82a37
parent675f65dc660805eff1953e3dfb6242ec076a9444 (diff)
downloaddpdk-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.c5
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);
}
}