3c509b and EISA

Recently I bought a 3c509b card, and expected to use it without problems with Linux. Unfortunately it was not detected by the kernel.

From www.scyld.com I found the utilities el3.c and 3c5x9setup.c, but these were not able to say anything useful either.

I found the 3com utility 3c5x9cfg.exe (by unpacking 3c509x2.exe under DOS; this file came from the 3com ftp site), and this detected the card but was unable to do anything with it:

"Error! - There are one or more Etherlink III ISA (3C509) NICs configured to EISA mode and installed in an ISA slot. Remove these NICs, place them in an EISA slot on an EISA computer, and configure them for ISA operation."

(It would be nice if the Linux utility were able to detect this state of affairs.)

Somewhere in the attic I must have an EISA machine, but first I searched on the net and found a note by Cameron Spitzer:

"Once a 3C509B is programmed for EISA mode I/O addressing, there are two ways to put it back in ISA mode. 1. Stick it in an EISA machine and run the diagnostic. 2. Short the factory configuration test point to ground during power-up."

I tried this shorting, but failed. To the attic, found an EISA machine, put the card in. It refused to do anything unless fed with the !TCM5091.CFG file, but fortunately this can be found in the same 3com archive 3c509x2.exe. Set the card to ISA, switched PNP off, choose an appropriate IRQ, and all was fine.

I write this in some detail because I did not find any such information on http://www.scyld.com/diag/ or in the Ethernet HOWTO. (Paul Gortmaker tells me that such info used to be in the Ethernet HOWTO, but was trimmed away later:

Cameron Spitzer writes: "Beware that if you put a '509 in EISA addressing mode by mistake and save that in the EEPROM, you'll have to use an EISA machine or the infamous Test Via to get it back to normal, and it will conflict at IO location 0 which may hang your ISA machine."
"The 3C579 (Etherlink III EISA) should be configured as an EISA card. The IO Base Address (window 0 register 6 bits 4:0) should be 1f, which selects EISA addressing mode. Logic outside the ASIC decodes the IO address s000, where s is the slot number. I don't think it was documented real well. Except for its IO Base Address, the '579 should behave EXACTLY like the '509 (EL3 ISA)."