--- drivers/net/e100.c-pre-swine Mon Nov 8 12:19:08 2004 +++ drivers/net/e100.c Mon Nov 8 12:25:36 2004 @@ -1580,11 +1580,18 @@ static irqreturn_t e100_intr(int irq, vo { struct net_device *netdev = dev_id; struct nic *nic = netdev_priv(netdev); - u8 stat_ack = readb(&nic->csr->scb.stat_ack); + u8 stat_ack, cmd_hi; + cmd_hi = readb(&nic->csr->scb.cmd_hi); + DPRINTK(INTR, DEBUG, "cmd_hi = 0x%02X\n", cmd_hi); + + if(cmd_hi & irq_mask_all) /* Not our interrupt */ + return IRQ_NONE; + + stat_ack = readb(&nic->csr->scb.stat_ack); DPRINTK(INTR, DEBUG, "stat_ack = 0x%02X\n", stat_ack); - if(stat_ack == stat_ack_not_ours || /* Not our interrupt */ + if(stat_ack == stat_ack_not_ours || /* nothing to do */ stat_ack == stat_ack_not_present) /* Hardware is ejected */ return IRQ_NONE;