summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Hemminger <shemminger@osdl.org>2006-09-06 10:17:54 -0700
committerGreg Kroah-Hartman <gregkh@suse.de>2006-09-08 14:51:40 -0700
commit15d658cb2010ec52e74920cfa64ef0427191ec3e (patch)
tree24005e4d5487f83892dae8057b612c14cde73865
parent669763679043a814febae9ac1501bd2c9f848559 (diff)
sky2: clear status IRQ after empty
Don't clear status IRQ until list has been read to avoid causing status list wraparound. Clearing IRQ forces a Transmit Status update if it is pending. Signed-off-by: Stephen Hemminger <shemminger@osdl.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--drivers/net/sky2.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
index 72ca553f8bc4..72659839f1dc 100644
--- a/drivers/net/sky2.c
+++ b/drivers/net/sky2.c
@@ -2016,6 +2016,9 @@ static int sky2_status_intr(struct sky2_hw *hw, int to_do)
}
}
+ /* Fully processed status ring so clear irq */
+ sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ);
+
exit_loop:
return work_done;
}
@@ -2218,9 +2221,6 @@ static int sky2_poll(struct net_device *dev0, int *budget)
*budget -= work_done;
dev0->quota -= work_done;
- if (status & Y2_IS_STAT_BMU)
- sky2_write32(hw, STAT_CTRL, SC_STAT_CLR_IRQ);
-
if (sky2_more_work(hw))
return 1;