[dpdk-stable] [dpdk-dev] net/e1000: correct mb function

Gavin Hu (Arm Technology China) Gavin.Hu at arm.com
Wed Sep 11 05:21:37 CEST 2019



> -----Original Message-----
> From: dev <dev-bounces at dpdk.org> On Behalf Of Xiao Zhang
> Sent: Wednesday, September 11, 2019 1:41 AM
> To: dev at dpdk.org
> Cc: wenzhuo.lu at intel.com; Xiao Zhang <xiao.zhang at intel.com>;
> stable at 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: stable at dpdk.org
> 
> Signed-off-by: Xiao Zhang <xiao.zhang at 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.hu at arm.com> 
> --
> 2.7.4



More information about the stable mailing list