From 6793e7bf7ae6e6676b2ed8bba619a299f1fe99ee Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Fri, 1 Sep 2006 15:53:48 -0700 Subject: [PATCH] --- yaml --- r: 35262 b: refs/heads/master c: 29365c900963d4986b74a0dadea46872bf283d76 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/drivers/net/skge.c | 9 ++++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index 8408a8493a6d..a6ea91a9d32f 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c54f9765daafe8493dba837b3d70e97432cd876a +refs/heads/master: 29365c900963d4986b74a0dadea46872bf283d76 diff --git a/trunk/drivers/net/skge.c b/trunk/drivers/net/skge.c index e86a88aa9d06..8a321be24835 100644 --- a/trunk/drivers/net/skge.c +++ b/trunk/drivers/net/skge.c @@ -2891,13 +2891,15 @@ static irqreturn_t skge_intr(int irq, void *dev_id, struct pt_regs *regs) { struct skge_hw *hw = dev_id; u32 status; + int handled = 0; + spin_lock(&hw->hw_lock); /* Reading this register masks IRQ */ status = skge_read32(hw, B0_SP_ISRC); if (status == 0) - return IRQ_NONE; + goto out; - spin_lock(&hw->hw_lock); + handled = 1; status &= hw->intr_mask; if (status & IS_EXT_REG) { hw->intr_mask &= ~IS_EXT_REG; @@ -2959,9 +2961,10 @@ static irqreturn_t skge_intr(int irq, void *dev_id, struct pt_regs *regs) skge_write32(hw, B0_IMSK, hw->intr_mask); skge_read32(hw, B0_IMSK); +out: spin_unlock(&hw->hw_lock); - return IRQ_HANDLED; + return IRQ_RETVAL(handled); } #ifdef CONFIG_NET_POLL_CONTROLLER