Directory: ~ftp/pub/linux/
WARNING -- read the bugs section at the end of this file before getting
the ethernet board driver!!!
Files:
README This file, updated Tuesday Nov. 24, 1992 18:34.
3c501.c The 3c501 ethernet driver source
3c503.c The 3c503, 3c503/16, NE1000 and NE2000 ethernet driver source.
3c503reg.h Definitions specific to the 3c503
8390.h Generic definitions for the NS8390 chip.
Space.c Added the table entries for the new ethernet drivers.
This file is modified from the 0.98.4 release.
Image A pre-built Linux 0.98.4 kernel with MathEmu, no SCSI, mount
patch, serial patch, CapsLck mapped to Cntrl, and the
3c503 and NE2000 ethernet drivers. This kernel usually has
massive ethernet debugging turned on (debugging the kernel
and setting ei_debug = 0 and el_debug = 0 will turn it off)
and this version may not really work. Also the address and
IRQ settings are hard-coded for most ethercards. Making your
own kernel is usually a much better choice.
linux-0.98.3-E If it exists, the last Image file that worked OK.
Directions:
You might want to rename "3c503.c" to "ne2000.c".
Put the files (3c503.c, 3c503reg.h, 8390.h, and Space.c) into linux/net/tcp/.
Space.c is the only tricky one -- it overwrites the old Space.c, and
you'll need to edit it to add your IRQ and base address.
Next add 3c503.o to to linux/net/tcp/Makefile
tcpip.o: ... 3c503.o
Edit linux/include/linux/config.h and/or config.site.h and insert the following
(see below for other details).
#undef CONFIG_DISTRIBUTION /* Use config.site.h instead. */
#define EI8390 0x300 /* Then these should be in config.site.h */
#define EI8390IRQ 5 /* Not used yet, edit Space.c instead. */
#define EI_DEBUG 2
Make and install your new kernel.
To actually use this driver you must get the TCP/IP package and edit
your /usr/etc/inet/rc.net file to config device "eth_if" instead of
"eth0" (the WD8003).
BUGS
None know right now. I haven't tested the NS8390 overrun code -- it
worked OK the last time I had other bugs to trigger it, but I've
changed it since.
Two errors in some versions of the 8390/83901/83902 may not
be handled correctly: the first is a bug where the RX status bytes
is missing from the header -- I try to recover first rather than
resetting the chip (which I do afterwards).
The second is the 8390 problem with writes to the ethercard
RAM: the first write may be corrupted if you don't do a read
first -- I've never seen this corruption happen, but it may
just be masked by higher level protocols.
I have put in the read-first code, but it's a frequent
source of problems... The timing is really tricky.
The 3c501 driver isn't complete. This card severely brain-damaged
anyway -- you won't notice the performance diffence when it does work.
Please send me email if you do try out the drivers, even if you don't
encounter bugs.
Important defines
EI_DEBUG Set to the desired numeric debugging level. Use 3 or
greater when actively debugging a problem, '1' for a
casual interest in what's going on, and '0' for normal
use. (Most of the debugging stuff has been taken out recently,
so this won't have much effect.)
EI8390 Define (probably in config.site.h) this to the base address
of your ethernet card. You will also have to set the base
address and irq in net/tcp/Space.c.
ETHERLINK1 Define this to the base address of a 3c501 card. You will
also have to set the base address and irq in net/tcp/Space.c.