> -----Original Message----- > From: dev <dev-boun...@dpdk.org> On Behalf Of Xiao Zhang > Sent: Wednesday, September 11, 2019 1:41 AM > To: dev@dpdk.org > Cc: wenzhuo...@intel.com; Xiao Zhang <xiao.zh...@intel.com>; > sta...@dpdk.org > Subject: [dpdk-dev] net/e1000: correct mb function > > 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); > } > } Reviewed-by: Gavin Hu <gavin...@arm.com> > -- > 2.7.4
Re: [dpdk-dev] net/e1000: correct mb function
Gavin Hu (Arm Technology China) Tue, 10 Sep 2019 20:22:20 -0700
- [dpdk-dev] net/e1000: correct mb function Xiao Zhang
- Re: [dpdk-dev] net/e1000: correct mb ... Gavin Hu (Arm Technology China)
- Re: [dpdk-dev] net/e1000: correct mb ... Ye Xiaolong