static void e100_hw_reset(struct nic *nic)You sure this is right? The comment seems to imply that writing the reset command to the registers also clears the interrupt mask. So you might need to have the e100_disable_irq() both before and after the reset.
{
+ /* Mask off our interrupt line - it's unmasked after reset + Do it early to prevent spurious interrupts. */
+ e100_disable_irq(nic);
+
/* Put CU and RU into idle with a selective reset to get
* device off of PCI bus */
writel(selective_reset, &nic->csr->port);
@@ -605,9 +609,6 @@ static void e100_hw_reset(struct nic *ni
writeb(cuc_load_base, &nic->csr->scb.cmd_lo);
mdelay(20);
}
-
- /* Mask off our interrupt line - it's unmasked after reset */
- e100_disable_irq(nic);
}
static int e100_self_test(struct nic *nic)