Skip to content

Commit b54ef37

Browse files
Liran Alondavem330
authored andcommitted
net: Google gve: Remove dma_wmb() before ringing doorbell
Current code use dma_wmb() to ensure Rx/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_rx_write_doorbell()/gve_tx_put_doorbell() should guaratee that all previous writes to WB/UC memory is visible to device before the write done by iowrite32be(). E.g. On ARM64, iowrite32be() calls __iowmb() which expands to dma_wmb() and only then calls __raw_writel(). Reviewed-by: Si-Wei Liu <[email protected]> Signed-off-by: Liran Alon <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent eed70fd commit b54ef37

File tree

2 files changed

+0
-8
lines changed

2 files changed

+0
-8
lines changed

drivers/net/ethernet/google/gve/gve_rx.c

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -418,8 +418,6 @@ bool gve_clean_rx_done(struct gve_rx_ring *rx, int budget,
418418
rx->cnt = cnt;
419419
rx->fill_cnt += work_done;
420420

421-
/* restock desc ring slots */
422-
dma_wmb(); /* Ensure descs are visible before ringing doorbell */
423421
gve_rx_write_doorbell(priv, rx);
424422
return gve_rx_work_pending(rx);
425423
}

drivers/net/ethernet/google/gve/gve_tx.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -487,10 +487,6 @@ netdev_tx_t gve_tx(struct sk_buff *skb, struct net_device *dev)
487487
* may have added descriptors without ringing the doorbell.
488488
*/
489489

490-
/* Ensure tx descs from a prior gve_tx are visible before
491-
* ringing doorbell.
492-
*/
493-
dma_wmb();
494490
gve_tx_put_doorbell(priv, tx->q_resources, tx->req);
495491
return NETDEV_TX_BUSY;
496492
}
@@ -505,8 +501,6 @@ netdev_tx_t gve_tx(struct sk_buff *skb, struct net_device *dev)
505501
if (!netif_xmit_stopped(tx->netdev_txq) && netdev_xmit_more())
506502
return NETDEV_TX_OK;
507503

508-
/* Ensure tx descs are visible before ringing doorbell */
509-
dma_wmb();
510504
gve_tx_put_doorbell(priv, tx->q_resources, tx->req);
511505
return NETDEV_TX_OK;
512506
}

0 commit comments

Comments
 (0)