This page contains information on using Linux with the 3Com 3c515 ISA Fast EtherLink board. The master copy of this page resides on the CESDIS WWW server.
The Linux driver for the 3Com 3c515 "Corkscrew" board is available from this web page.
This driver is available only in an alpha-test version.
The 3c515 must be activated with ISA Plug-and-Play before it exists in
I/O space. If your motherboard does not support ISA Plug-and-Play (this
won't be subtle -- the module won't find your 3c515 card) you will need to
run the following program to activate your board before loading the driver
as a module:
http://www.roestock.demon.co.uk/isapnptools/.
The 'isapnp' program in this package requires a configuration file. Use the 'pnpdump' program to generate a config file like this
pnpdump > /etc/isapnp.confThen edit /etc/isapnp.conf, uncommenting the IRQ, CHANNEL and BASE lines and changing the numbers so they don't conflict with other devices. Also, uncomment the ACT line.
The following basic configuration sets the card to 0x280, DMA 5, IRQ12. But since the ISA-PnP program unwisely requires the serial number of your specific card it won't work without modification.
(READPORT 0x0203) (ISOLATE) (IDENTIFY *) # Card 1: (serial identifier a5 24 d7 49 51 51 50 6d 50) # TCM5051 # ANSI string -->3Com Fast EtherLink ISA<-- (CONFIGURE TCM5051/? (LD 0 (INT 0 (IRQ 12 (MODE +E))) (DMA 0 (CHANNEL 5)) (IO 0 (BASE 0x0280)) (ACT Y) ))
Edit your configuration in /etc/isapnp.conf and activating the board by running
isapnp /etc/isapnp.confbefore loading the module.
Linux has a facility for linking device drivers into the running kernel. This is called Modules support. While probing for ISA devices at run time is a generally a bad idea, loading a module is the only reasonable way to support ISA PnP cards on motherboards without PnP BIOS support.
Here's how to make and load the Modules version:
If you get an "linux/version.h no such file or directory" you either
have not installed the kernel source code, or you haven't run
cd /usr/src/linux; make include/linux/version.hyet. Some distributions allow you to install just the essential header files of the kernel source code, including a pre-built "version.h", so this isn't always necessary.
If you get the error message "kernel_version needed, but can't be found" you forgot the -DMODULE flag when compiling. That probably means you didn't use the compile command at the bottom of the source as instructed above.
A diagnostic program is available to help debug register settings, EEPROM contents and board-setup problems.
When loaded as a module the following variables may be set:
name type description debug int The debug message level, 0 (no messages) to 6 (wordy). options int[] The media type override and card operation settings.
An example of loading the 3c515 module is insmod 3c515.o debug=1 options=0,16 This sets the debug message level to minimal messages.
Possible media type settings
0 10baseT 1 10Mbps AUI (not available on most cards) 2 undefined (special case: 10baseT from the LILO prompt) 3 10base2 (not available on most cards) 4 100base-TX 5 100base-FX (not available on most cards) 6 MII (not available on current cards) 7Add 8 to these setting to force full duplex. Typical media type overrides are
Support for the 3c515 driver is being handled through the mailing lists
To subscribe to a list, send a message with the contents "subscribe" e.g.:
The 3c515 is an ISA bus adapter. The ISA bus is nominally limited to 5.3 MB/second.
The March 1997 version of the driver does not yet support bus-master operation, which has a serious negative effect on the CPU load while handling heavy traffic. The current driver does include the 'Boomerang' code with the basic bus-master operation, but this is not enabled. To add bus-master support requires adding bounce buffer support (see the LANCE driver for an example) to both the transmit and receive routines.
This driver shares much source code with the Vortex and Boomerang drivers. A natural question is "when will the drivers be merged?". Since I've written and am maintaining many drivers, including the all modern 3Com ones, it would simplify my job to do so.
The problem is that the register offsets differ between the cards, apparently a result of trying to fit cleanly into the ISA I/O space limitations. While it has often been said "all computer science problems can be solved by a layer of indirection", I feel a layer of indirection when accessing hardware registers would likely have considerable impact on driver performance. Until I have measurements that indicate otherwise, I'm keeping the 3c515 driver as a separate source code tree.
Most Ethernet chips can match a single unicast address -- their own station address -- and support a statistical (aka hash) filter for initial filtering of unwanted multicast packets. This is typically done by taking the CRC intermediate result just after destination address arrives, and using a few bits as the index into a table of which multicast packets are acceptable. The typical chip has 64 bins and uses six bits of CRC.
The EtherLink III series has no multicast filter, and can only receive-no or receive-all multicast packets.
CESDIS is located at the NASA Goddard Space Flight Center in Greenbelt MD.