This is the current version of the 8390 ethercard driver. The ether-994 drivers are for 0.99.4 and earlier. The ether-995 drivers are for 0.99.5. You should consult the list below for the specific #define for your ethercard. If you don't have one specific #define the driver will probe for all supported ethercard types. Source Header #define to get Supported cards 8390.c 8390.h EI8390 (generic, needed for all) 3c503.c 3c503reg.h EL2 3c503, 3c503/16 ne.c NE2000 NE1000, NE2000, NatSemi, Cabletron wd.c wd.h WD80x3 WD8003, WD8013, SMC elite hp.c HPLAN HP LAN adaptors Notes on each file INSTALL The installation directions -- "read this first, uhmmm, second". GNUmakefile The 'GNUmakefile' name is "magic". You just put it into the directory and it is loaded instead of the regular Makefile (which it thenincludes). Most people should never need to edit the Makefile, just the GNUmakefile. 3c503.c o You'll need to '#define EI8390_THICK' or EL2_AUI if you are using the AUI port instead of the thinnet connector. Russ Nelson sent me an run-time method of selecting between the two, but I haven't put it in yet. This _may_ generate a spurious error message when transmitting the first packet, I haven't yet tracked down this bug report. o If you want to check the shared memory, #define EL2MEMTEST. I don't think the memory check is worth the effort -- it's missed obvious problems. o You must jumper the board to use shared memory -- I don't test the non-shared-memory mode and it's probably broken. o Thanks to Chance Reschke at USRA for providing the 3c503 and anonymous FTP space. ne.c o You'll need to #define EI_8BIT if you are using an 8-bit ethercard such as the NE1000 or Cabletron E10xx. I might someday make a run-time selection between the NE1000 and NE2000 (right now it screws up the non-default bus-width) but I don't know how to distinguish the Cabletron ethercards. I'm hoping to find a general way to identify the board's bus width, but don't hold your breath. wd.c o Thanks to Russ Nelson (nelson@crynwr.com) for loaning me a WD8013. o The 8013 doesn't work if it's probed by some other driver first: keep it first in the probe list. I could reset the board before looking at it to fix the probe problem, but this involves an outb() which may disturb non-WD8013 devices. o You _must_ run this board with shared memory enabled. Don't set the jumper to the no-shared-memory setting. o The driver now reads the EEPROM setting, so you can use the EEPROM settings! And there is a new Linux 'wdsetup' program that replaces MS-DOS 'EZSETUP'! o You machine may fail to do a soft reboot if the packet buffer shared memory is mapped in -- the machine might think its a boot PROM (since it intentionally shares the same memory space as the optional on-board boot PROM). "Live with it" for now. o If the packet buffer memory is mapped into a cacheable region it won't work! It's really easy to this with the map-it-anywhere EEPROM. Check your BIOS setup. o If you have an old non-EEPROM wd8003 and need to change the shared memory address from the default 0xd0000 set WD_SHMEM to the desired address. hp.c o This has only been tested with a 27245A, 27247A, and 27250. It doesn't yet work with the new 27247B! o Thanks to Chance Reschke at USRA for loaning me the 27247A ethercard. BUGS The "bogus packet header" is a bug in the 8390. I drop all of the packets in the ring (usually just one) when this happens. If you get this more than just occasionally please report it to me. I don't yet distinguish between the problems with IRQ conflicts and problems with the ethernet cable not being connected. If you get a "transmit timed out" message check both! Your ethercard probably will NOT work without proper termination. A small number of people report continuous "RX transfer address mismatch" errors with the NE2000. This is a bug in the 8390, and the reason most designers use shared memory or design their own packet buffer access circuitry rather than use what's provided by the 8390. An occasional "mismatch" message (say, once a week) won't impact performance. I've fixed most of the spurious "receiver overrun" messages. It was a bug in the 8390 -- the overrun flag is sometimes set when the boundary pointer is written. If you still get isolated overrun errors please send me email. The 3c501 driver isn't complete. This card is severely brain-damaged anyway -- you won't notice the performance difference between working and non-working versions anyway. If this source code is here, it is only provided for a few people that wanted to write code for their 3c501 cards. Don't send me email about it unless it's a bug fix.