Improve detection of spurious interrupts by checking against the
interrupt mask as currently set in the chip.

Signed-off-by: Heiner Kallweit <hkallwe...@gmail.com>
---
 drivers/net/ethernet/realtek/r8169.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/realtek/r8169.c 
b/drivers/net/ethernet/realtek/r8169.c
index 8462553e3..99bc3de90 100644
--- a/drivers/net/ethernet/realtek/r8169.c
+++ b/drivers/net/ethernet/realtek/r8169.c
@@ -6405,8 +6405,9 @@ static irqreturn_t rtl8169_interrupt(int irq, void 
*dev_instance)
 {
        struct rtl8169_private *tp = dev_instance;
        u16 status = rtl_get_events(tp);
+       u16 irq_mask = RTL_R16(tp, IntrMask);
 
-       if (status == 0xffff || !(status & tp->irq_mask))
+       if (status == 0xffff || !(status & irq_mask))
                return IRQ_NONE;
 
        if (unlikely(status & SYSErr)) {
-- 
2.20.0

Reply via email to