System hang with two Intel EtherExpress Pro 100 cards

Kai Makisara (makisara@metla.fi)
Sun, 31 Jan 1999 10:49:45 +0200 (EET)


Some people have seen their system hung when using two Intel
EtherExpress Pro 100 network adapters using the same interrupt. I have
experienced the same but found out that with the old (i.e., before
2.1.106?) driver the system did not hang (the system is single PII
400).

With the new driver, the system hung when executing ifconfig for the
second adapter. This suggested that comparing speedo_open() in the
two drivers might be helpful. Moving request_irq() earlier removed
the problem in my system. It was enough to move it above mdio_read()
(the patch at the end of this message; in my case sp->phy[0] is
0x4701 and mdio_read() is called).

I don't understand why moving request_irq() earlier helps but I hope
someone can find the reason and the proper fix.

Kai
-----------------------------------8<------------------------------------
--- /source/linux/drivers/net/eepro100.c Tue Jan 19 22:26:22 1999
+++ linux/drivers/net/eepro100.c Sun Jan 31 10:08:36 1999
@@ -842,9 +842,6 @@

wait_for_cmd_done(ioaddr + SCBCmd);
outw(CU_DUMPSTATS, ioaddr + SCBCmd);
- /* No need to wait for the command unit to accept here. */
- if ((sp->phy[0] & 0x8000) == 0)
- mdio_read(ioaddr, sp->phy[0] & 0x1f, 0);

/*
* Request the IRQ last, after we have set up all data structures.
@@ -854,6 +851,10 @@
"Intel EtherExpress Pro 10/100 Ethernet", dev)) {
return -EAGAIN;
}
+
+ /* No need to wait for the command unit to accept here. */
+ if ((sp->phy[0] & 0x8000) == 0)
+ mdio_read(ioaddr, sp->phy[0] & 0x1f, 0);

MOD_INC_USE_COUNT;

--------------------------------------8<-------------------------------------

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/