Linux and the 3Com 3c515 ISA Fast EtherLink

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.

Usage instructions

Plug-and-Play Support

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:

The 'isapnp' program in this package requires a configuration file. Use the 'pnpdump' program to generate a config file like this

   pnpdump > /etc/isapnp.conf
Then 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)

# Card 1: (serial identifier a5 24 d7 49 51 51 50 6d 50)
# TCM5051
# ANSI string -->3Com Fast EtherLink ISA<--
   (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.conf
before loading the module.

Installation instructions for the Modules version

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:

Possible problems and solutions

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.h
yet. 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.

Diagnotic program

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)
Add 8 to these setting to force full duplex. Typical media type overrides are


Note: These mailing lists do not yet exist.
Until they do, email me directly with reports. I'll create them when there is a mailing list request or the volume warrants.

Support for the 3c515 driver is being handled through the mailing lists
for news general information and
for bug reports and problems.

To subscribe to a list, send a message with the contents "subscribe" e.g.:

echo subscribe | /bin/mail to get on the low-volume information list, and echo subscribe | /bin/mail if you want to know more about bugs and driver development.




The 3c515 is an ISA bus adapter. The ISA bus is nominally limited to 5.3 MB/second.

Bus-master support

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.

Driver commonality

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.

3c515 Multicast Support

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.

Author:Donald Becker,
Linux at CESDIS

CESDIS is located at the NASA Goddard Space Flight Center in Greenbelt MD.