diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-02-12 09:27:56 +0100 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-02-12 09:27:56 +0100 |
commit | 41480ae7a383dcffa497decdd97b3cb2caaa18ec (patch) | |
tree | f1e3afce2cbd0bbc544cd86a73e5b3093eb081c4 /drivers/net/tulip/de2104x.c | |
parent | sh: Restrict old CMT timer code to SH-2/SH-2A. (diff) | |
parent | serial: sh-sci: fix overrun error handling for SH7785 SCIF. (diff) | |
download | linux-41480ae7a383dcffa497decdd97b3cb2caaa18ec.tar.xz linux-41480ae7a383dcffa497decdd97b3cb2caaa18ec.zip |
Merge branch 'sh/stable-updates'
Diffstat (limited to 'drivers/net/tulip/de2104x.c')
-rw-r--r-- | drivers/net/tulip/de2104x.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/tulip/de2104x.c b/drivers/net/tulip/de2104x.c index d5d53b633cf8..d4c5ecc51f77 100644 --- a/drivers/net/tulip/de2104x.c +++ b/drivers/net/tulip/de2104x.c @@ -392,7 +392,7 @@ static void de_rx (struct de_private *de) unsigned drop = 0; int rc; - while (rx_work--) { + while (--rx_work) { u32 status, len; dma_addr_t mapping; struct sk_buff *skb, *copy_skb; @@ -464,13 +464,14 @@ static void de_rx (struct de_private *de) drop = 1; rx_next: - de->rx_ring[rx_tail].opts1 = cpu_to_le32(DescOwn); if (rx_tail == (DE_RX_RING_SIZE - 1)) de->rx_ring[rx_tail].opts2 = cpu_to_le32(RingEnd | de->rx_buf_sz); else de->rx_ring[rx_tail].opts2 = cpu_to_le32(de->rx_buf_sz); de->rx_ring[rx_tail].addr1 = cpu_to_le32(mapping); + wmb(); + de->rx_ring[rx_tail].opts1 = cpu_to_le32(DescOwn); rx_tail = NEXT_RX(rx_tail); } |