From: Stephen Hemminger Date: Wed, 6 Sep 2006 17:17:54 +0000 (-0700) Subject: sky2: clear status IRQ after empty X-Git-Tag: v2.6.17.12~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=15d658cb2010ec52e74920cfa64ef0427191ec3e;p=thirdparty%2Fkernel%2Fstable.git 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 Signed-off-by: Greg Kroah-Hartman --- diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c index 72ca553f8bc4b..72659839f1dc4 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;