summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Cox <alan@lxorguk.ukuu.org.uk>2003-07-17 19:44:31 -0700
committerLinus Torvalds <torvalds@home.osdl.org>2003-07-17 19:44:31 -0700
commit69c1e9d69a8ff41db0673f428d9de8d7065cacee (patch)
tree42b5a4b81d4988b65afb30622c21aa57bff9c3a0
parent0d1f24961955f23132945eac983c8b114480b807 (diff)
[PATCH] use cpu_relax in seq8005
-rw-r--r--drivers/net/seeq8005.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/drivers/net/seeq8005.c b/drivers/net/seeq8005.c
index 08cd543eda47..aeb0ffe105a8 100644
--- a/drivers/net/seeq8005.c
+++ b/drivers/net/seeq8005.c
@@ -700,7 +700,8 @@ static void hardware_send_packet(struct net_device * dev, char *buf, int length)
* wait_for_buffer
*
* This routine waits for the SEEQ chip to assert that the FIFO is ready
- * by checking for a window interrupt, and then clearing it
+ * by checking for a window interrupt, and then clearing it. This has to
+ * occur in the interrupt handler!
*/
inline void wait_for_buffer(struct net_device * dev)
{
@@ -710,7 +711,7 @@ inline void wait_for_buffer(struct net_device * dev)
tmp = jiffies + HZ;
while ( ( ((status=inw(SEEQ_STATUS)) & SEEQSTAT_WINDOW_INT) != SEEQSTAT_WINDOW_INT) && time_before(jiffies, tmp))
- mb();
+ cpu_relax();
if ( (status & SEEQSTAT_WINDOW_INT) == SEEQSTAT_WINDOW_INT)
outw( SEEQCMD_WINDOW_INT_ACK | (status & SEEQCMD_INT_MASK), SEEQ_CMD);