From 3d6a44b0f4a63d0ff29a889b04dd5e698afa8446 Mon Sep 17 00:00:00 2001 From: Andreas Oberritter Date: Wed, 8 Oct 2008 06:14:16 +0000 Subject: [PATCH] --- yaml --- r: 112199 b: refs/heads/master c: 176eaa589b3d242f25f24e472883fcce5f196777 h: refs/heads/master i: 112197: ca12ef0d24363e0026f74b58e4b9274f196fd43b 112195: 8f88b32874a9a8583176a5c601b0f58bbf1192e2 112191: 18889ac128d772310c48c4f3521eca4afc7ad58f v: v3 --- [refs] | 2 +- trunk/drivers/net/8139too.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 6fda3418d2d8..c51dcab37ca3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: ed4cb1337b7c23b91a0f01f661c3f004fc3d3c1a +refs/heads/master: 176eaa589b3d242f25f24e472883fcce5f196777 diff --git a/trunk/drivers/net/8139too.c b/trunk/drivers/net/8139too.c index 32e66f0d4344..0daf8c15e381 100644 --- a/trunk/drivers/net/8139too.c +++ b/trunk/drivers/net/8139too.c @@ -1723,13 +1723,18 @@ static int rtl8139_start_xmit (struct sk_buff *skb, struct net_device *dev) } spin_lock_irqsave(&tp->lock, flags); + /* + * Writing to TxStatus triggers a DMA transfer of the data + * copied to tp->tx_buf[entry] above. Use a memory barrier + * to make sure that the device sees the updated data. + */ + wmb(); RTL_W32_F (TxStatus0 + (entry * sizeof (u32)), tp->tx_flag | max(len, (unsigned int)ETH_ZLEN)); dev->trans_start = jiffies; tp->cur_tx++; - wmb(); if ((tp->cur_tx - NUM_TX_DESC) == tp->dirty_tx) netif_stop_queue (dev);