Linux and the Intel PCI EtherExpress Pro 100 series

Products Supported

This page contains information on using Linux with the Intel PCI EtherExpress Pro 100 series, the Pro/100B, Pro/100+, and other PCI and integrated Intel Fast Ethernet NICs.

This driver will also work with the Intel Pro/100 CardBus "generation II" product that uses the i82559 chip. Other Intel CardBus cards use the i21143 chip which requires the Tulip driver.

This driver will not work with any ISA or EISA cards. Nor will this driver work with the few 1995-era 100A cards using the i82556 chip. No driver is planned for the long-obsolete i82556 chip. This driver will work with the 10mbps PCI Pro-Plus boards that use the i82557 chip.

Driver Status

The master copy of this page resides on the Scyld web server.

This driver is tested with the x86, Alpha, and PowerPC architecture with kernel versions 2.0 through 2.4. It is reported to be stable, with the following notes:

  • This driver does not support kernels earlier than 2.0.0.
  • Only limited testing has been done with other (e.g. MIPS) architectures.

See also the

Other driver versions

Andrey Savochkin maintains a version of the driver for the 2.4 kernel. His versions are avaiable at

Usage instructions

Installation

The driver installation directions are on the Driver Updates page. You may install just one driver (see below), or install all updated drivers using either the netdriver.tgz file or the SRPM.

To install a single updated driver read the Network Drivers as Modules page for instructions. You should, of course, substitute the proper driver file name.

When updating a single driver you will need to build pci-scan.o along with the specific driver.o file. This means that in addition to the driver.c file, you must download pci-scan.c, pci-scan.h, and kern_compat.h.

Configuration Options

Note: Do not force the duplex or speed setting unless you are certain that it is required for your network environment. Forcing a setting is needed only to work around flawed equipment.

When loaded as a module the following variables may be set:
Name Type Description
debug int The debug message level, 0 (no messages) to 31 (wordy).
options int[] The media type override and card operation settings (See list below.)
full_duplex int[] Specify that this chip should always be used in FD mode. This option should only be used when the link partner is an old, non-negotiating switch also set to forced-full-duplex mode.
rx_copybreak int The packet size below which the incoming packet should should be copied to a minimally-sized buffer instead of being processed in a "zero-copy" full-sized buffer.
max_interrupt_work int Maximum number of events to handle at each interrupt, default 20.
multicast_filter_limit int Maximum number of multicast addresses before switching to receiving a multicast packets.

Where there are multiple interfaces the options and full_duplexsettings may be individually initialized with a comma separated list of values. The other settings use the same value for all interfaces handled by the driver.

In most cases no transceiver override option need be set. A notable exception is when connecting to an older ethernet switch that operates in full-duplex mode but does not do NWay autonegotation.

The following transceiver options values are recognized for driver versions 1.15 and later
Option value Transceiver setting
0x10 Forced 10baseT half duplex.
0x20 Forced 10baseT full duplex.
0x100 Forced 100baseTx half duplex.
0x200 Forced 100baseTx full duplex.
Note that these values must have a leading "0x".

The following transceiver settings are recognized for driver versions 1.14 and earlier

 Hex   Decimal  Meaning
 0x10  16	Force Full-Duplex operation (must be used with 0x20 or 0x40)
 0x20  32	Force 100mbps-only operation
 0x40  64	Force 10mbps-only

Add the above decimal values to get the complete option setting.

Using Module Options

When loading the driver as a module the option flags are usually passed as follows

	insmod eepro100.o debug=1 options=0x100,0,0x20
This sets the first adapter to 100mbps-only operation, the second to the default NWay autonegotiation, and the third to 10mbps full-duplex.

Passing Options to Built-in Drivers

When the driver is permanently linked into the kernel the transceiver speed setting may be passed as the third kernel parameter

     ether=0,0,0x20,eth0 ether=0,0,0,eth1 ether=0,0,0x50,eth2

Several additional internal values may be tuned when the driver is loaded as a modules. See the top of the driver source code for details.

Run-time Configuration

This driver provide a interface to the Media Independent Interface, "MII" transceiver configuration and diagnostic settings. This interface allows the media type (i.e. 10Mbps or 100Mbps, half or full duplex) to be configured. The settings are usually configured by the mii-diag program (which has more function than its name implies). The details of this program may found on the diagnostic home page.

Limitations and Notes

The current version of the Intel EtherExpress Pro 100B driver is designed for 2.0 through 2.4 kernels. The 1.2.* kernels do not permit the reserving space in the "skbuff" for a descriptor, and thus will not work with this driver.

Some web browsers will format (and thus corrupt) the driver source code when transferring via HTTP. You might wish to use FTP to transfer the driver source code from ftp://scyld.com/pub/network/eepro100.c instead.

This driver will work only with PCI cards. ISA and EISA cards have different architectures and have no chance of working with this driver. The older 100A cards using the i82556 chip will not work with this driver. There is no simple modification to make it so. I have no plans to write a driver for the ancient 100A, or even the documentation to do so. Please don't write to ask about it. Please.

As of April 2002, there is no known driver development for the 100A boards.

This driver will also work with the following boards:

  • Microdyne/Eagle NE10/100 (i82557 w/DP83840 transceiver).
  • IBM IBM EtherJet PCI 10/100 board (i82557, i82559).
  • Allied Telesyn AT-2560 (including the FX transceiver version).

Support

Mailing list

Support for the EEPro100 driver is handled through the following mailing lists:

eepro100
General driver discussions, including bug fixes.
eepro100-bug
Reporting driver bugs.
See http://www.scyld.com/mailman/listinfo for information on subscribing to these lists.

Using the above lists for unrelated advertisements is subject to a charge of /home/httpd/html-scyld/network.34 per destination address, payable in advance to Scyld's Annapolis MD address.

Diagnostic and Setup Programs

A diagnostic and setup program is available from
http://www.scyld.com/diag/index.html .

That same page includes the 'mii-diag' program used to modify the run-time setting of the transceiver.

Please send the output of the relevant program when reporting a problem.

Common Problems

Syntax errors during compile

If you get syntax errors during the compile, your web browser (or this web server's) MIME-types table is likely broken. C source code files should be transferred as raw text, not interpreted as HTML source. Try transferring the driver using FTP from ftp://ftp.scyld.com/pub/network/

'ifconfig' reports "Try again"

The EEPro100 board has an IRQ conflict. While the driver does use shared PCI interrupts, problems can still occur. Read http://www.scyld.com/expert/irq-conflict.html for help on resolving configuration problems.

Errata and History

New driver versions are announced on the mailing list along with a brief summary of any significant changes.

Developer Information

Full programming information is available only after signing a non-disclosure agreement with Intel. I am not able to provide copies of the manuals, that information can only come from Intel. The following are sources of open information about some aspects of the NIC operation.
Intel network application note index
AP-369 LAN557 Hardware/Software Interface Definition
This document contains the EEPROM format for the i82557 and i82558.
AP-373 Replacing the DEC 21140 with the Intel 82557
A feature comparison table -- mostly marketing literature.

Acknowledgments

Thanks to Steve Williams, Steven_D_Williams@ccm.jf.intel.com, and Terry Crawford of Intel for sorting out the incompatibilities of the standard Intel NDA and the Linux/GPL source code release terms. They provided a pair of EtherExpress Pro 100B cards as well.

My thanks also go to hocy@J300161362.RESNET.CORNELL.EDU Chris Ho, a dedicated pre-alpha tester that tried many non-working versions before I had the hardware to do so myself.


Linux Network Drivers Page
Linux Network Drivers Updates Page
SCYLD information.
Author: Donald Becker
.
See the drivers for the contact email address. Do not bother sending email to zinc.anode@scyld.com, as email to that address adds your domain or IP address to the known-spammer list.
Linux Network Drivers Page
SCYLD information.
Author: Donald Becker
See the drivers for the contact email address. Do not bother sending email to zinc.anode@scyld.com, as email to that address adds your domain or IP address to the known-spammer list.