From: Rob Herring <[email protected]>

Ensure that the descriptor writes are visible before the ring buffer head
is updated. Since writel is a barrier, we can simply update the head after
the writel.

Reported-by: Lennert Buytenhek <[email protected]>
Signed-off-by: Rob Herring <[email protected]>
---
 drivers/net/ethernet/calxeda/xgmac.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/calxeda/xgmac.c 
b/drivers/net/ethernet/calxeda/xgmac.c
index 64854ad..f630855 100644
--- a/drivers/net/ethernet/calxeda/xgmac.c
+++ b/drivers/net/ethernet/calxeda/xgmac.c
@@ -1121,9 +1121,10 @@ static netdev_tx_t xgmac_xmit(struct sk_buff *skb, 
struct net_device *dev)
        wmb();
        desc_set_tx_owner(first, desc_flags | TXDESC_FIRST_SEG);
 
+       writel(1, priv->base + XGMAC_DMA_TX_POLL);
+
        priv->tx_head = dma_ring_incr(entry, DMA_TX_RING_SZ);
 
-       writel(1, priv->base + XGMAC_DMA_TX_POLL);
        if (dma_ring_space(priv->tx_head, priv->tx_tail, DMA_TX_RING_SZ) <
            MAX_SKB_FRAGS)
                netif_stop_queue(dev);
-- 
1.8.1.2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to