[PATCH] ep93xx_eth: fix RX/TXstatus ring full handling
authorLennert Buytenhek <buytenh@wantstofly.org>
Mon, 30 Oct 2006 18:52:31 +0000 (19:52 +0100)
committerJeff Garzik <jeff@garzik.org>
Wed, 1 Nov 2006 01:22:05 +0000 (20:22 -0500)
commit2d38caba5fd148976f54930782e8209fa45879a0
tree7f8bc1ee29d9bfc79ecb9a609084526a874df492
parentd5b9b787b5e1618dfe82a2c2a6972374e85b02db
[PATCH] ep93xx_eth: fix RX/TXstatus ring full handling

Ray Lehtiniemi reported that an incoming UDP packet flood can lock up
the ep93xx ethernet driver.  Herbert Valerio Riedel noted that due to
the way ep93xx_eth manages the RX/TXstatus rings, it cannot distinguish
a full ring from an empty one, and correctly suggested that this was
likely to be causing this lockup to occur.

Instead of looking at the hardware's RX/TXstatus ring write pointers
to determine when to stop reading from those rings, we should just check
every individual RX/TXstatus descriptor's valid bit instead, since there
is no other way to distinguish an empty ring from a full ring, and if
there is a descriptor waiting, we take the hit of reading the descriptor
from memory anyway.

Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
drivers/net/arm/ep93xx_eth.c