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
- EEPro100 Mailing List archive on Tux
- EEPro100-bugs Mailing List archive on Tux
- Scyld Mailing List archive
Other driver versions
Andrey Savochkin maintains a version of the driver for the 2.4 kernel. His versions are avaiable at
- ftp://ftp.sw.com.sg/pub/Linux/people/saw/kernel/v2.3/ , or
- ftp://ftp.swusa.com/pub/Linux/people/saw/kernel/v2.3/
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. |
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,0x20This 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.
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.