[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200103130108.70593-1-liran.alon@oracle.com>
Date: Fri, 3 Jan 2020 15:01:08 +0200
From: Liran Alon <liran.alon@...cle.com>
To: csully@...gle.com, davem@...emloft.net, netdev@...r.kernel.org
Cc: sagis@...gle.com, jonolson@...gle.com, yangchun@...gle.com,
lrizzo@...gle.com, adisuresh@...gle.com,
Liran Alon <liran.alon@...cle.com>,
Si-Wei Liu <si-wei.liu@...cle.com>
Subject: [PATCH] net: Google gve: Remove dma_wmb() before ringing doorbell
Current code use dma_wmb() to ensure Tx descriptors are visible
to device before writing to doorbell.
However, these dma_wmb() are wrong and unnecessary. Therefore,
they should be removed.
iowrite32be() called from gve_tx_put_doorbell() internally executes
dma_wmb()/wmb() on relevant architectures. E.g. On ARM, iowrite32be()
calls __iowmb() which translates to wmb() and only then executes
__raw_writel(). However on x86, iowrite32be() will call writel()
which just writes to memory because writes to UC memory is guaranteed
to be globally visible only after previous writes to WB memory are
globally visible.
Reviewed-by: Si-Wei Liu <si-wei.liu@...cle.com>
Signed-off-by: Liran Alon <liran.alon@...cle.com>
---
drivers/net/ethernet/google/gve/gve_tx.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/drivers/net/ethernet/google/gve/gve_tx.c b/drivers/net/ethernet/google/gve/gve_tx.c
index f4889431f9b7..d0244feb0301 100644
--- a/drivers/net/ethernet/google/gve/gve_tx.c
+++ b/drivers/net/ethernet/google/gve/gve_tx.c
@@ -487,10 +487,6 @@ netdev_tx_t gve_tx(struct sk_buff *skb, struct net_device *dev)
* may have added descriptors without ringing the doorbell.
*/
- /* Ensure tx descs from a prior gve_tx are visible before
- * ringing doorbell.
- */
- dma_wmb();
gve_tx_put_doorbell(priv, tx->q_resources, tx->req);
return NETDEV_TX_BUSY;
}
@@ -505,8 +501,6 @@ netdev_tx_t gve_tx(struct sk_buff *skb, struct net_device *dev)
if (!netif_xmit_stopped(tx->netdev_txq) && netdev_xmit_more())
return NETDEV_TX_OK;
- /* Ensure tx descs are visible before ringing doorbell */
- dma_wmb();
gve_tx_put_doorbell(priv, tx->q_resources, tx->req);
return NETDEV_TX_OK;
}
--
2.20.1
Powered by blists - more mailing lists