This page contains information on using Linux with various PCI Ethernet Controllers.
The master copy of this page resides on the Scyld web server. These drivers are being maintained in support of the Beowulf cluster project.
This page is a catch-all for drivers that are don't have their own page. Don't feel less-than-special: it's a good thing when a driver doesn't require unique usage notes!
The chips/drivers supported by this page are:
| Driver name | Chip name | Adapter notes |
| natsemi.c | National Semiconductor DP83815. | Netgear FA-311 |
| starfire.c | Adaptec DuraLAN (AKA "Starfire") | Adaptec 64 bit adapters. |
| sundance.c | Sundance ST201 "Alta" chip, | D-Link DFE-550 |
| via-rhine.c | VIA Rhine and Rhine-II | D-Link DFE-530-TX |
| winbond-840.c | Winbond w89c840 | Compex RL100ATX-PCI, many others |
| winbond-841.c | Winbond w89c841 | Unreleased (Nov. 2000) |
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.
Read the Network Drivers as Modules page for instructions on installing drivers individually. You should, of course, substitute the proper driver file name.
You will need to build pci-scan.o along with the specific driver.o file. You must download pci-scan.c, pci-scan.h, and kern_compat.h.
No driver configuration is needed for normal Ethernet environments. The following settings are for special cases only.
When loaded as a module the following variables may be set:
| name | type | description |
| debug | int | The debug message level, 0 (no messages) to 7 (wordy). The default is 1. |
| options | int[] | The media type override and card operation settings. |
| 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. |
Where there are multiple interfaces the options and full_duplexsettings may be individually initialized with a comma separated list of values.
Most 10/100 drivers provide a interface to the Media Independent Interface, "MII" 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 (slightly misnamed) mii-diag program. The details of this program may found on the diagnostic home page.
The drivers are supported by both a bugzilla page and mailing lists at http://www.scyld.com/mailman/listinfo.
Currently only the Realtek driver has its own mailing lists. As other drivers require additional support, they will get their own mailing list.
All fully supported chips have a specific diagnostic program. These programs examine the device registers, EEPROM values, and MII transceiver management registers - external connections that are likely to fail or be mis-configured. A few run tests of internal functionality, but on-chip subsystems rarely fail.
The diagnostic programs are described at
http://www.scyld.com/diag/index.html
Source and binary packages are available from
ftp://ftp.scyld.com/pub/diag/*
The commonly available driver emits messages of the form "Something Wicked happened!" for common error cases. These are still errors, but subsequent driver versions have been changed to only increment the error counts at the default message level.
The meaning of the error status number is as follows.
| Error bits | Meaning | Explanation |
| 2000 | Tx aborted | Either excessive collisions or no link beat. |
| 0040 | PCI Bus Error | A serious, perhaps unrecoverable error . |
| 0010 | Transmit FIFO underrun | The PCI bus is slow or busy. |
| 0008 | Transmit error | Transmit aborted because of excessive collisions. |
These error indications are usually combined with other common status bits.
The current revision of the Winbond 840 appears to have a horribly broken transmit queue. Only 2048 bytes can be allowed into the transmit queue at a time. While the driver has been restructured to reduce the impact of this bug, the Winbond chip will have a higher interrupt rate and often lower transmit throughput than other chips.
Adaptec prefers this series to be known as the DuraLAN. As the documentation and driver are updated I'm adding "DuraLAN" to the naming. Be careful what you wish for -- eventually I may rename the driver from starfire.c to not-starfire.c ;-).
The driver emits messages of the form "Something Wicked happened!" for common error cases. The meaning of the error status number is as follows.
| Error bits | Meaning | Explanation |
| 0x.2000000 | An abnormal event (AKA "error") occurred. | |
| 0x....0010 | TxLowPrMismatchInt, a Tx transmit buffer contained invalid data. | |
| 0x....0001 | Always set during interrupt. |
The driver emits messages of the form "Something Wicked happened!" for very rare error cases. The meaning of the error status value is in the following table. Note that the error status values below have extra spaces for readability.
| Error bits | Meaning | Explanation |
| 0080 0000 | PCI parity error | PCI bus parity error |
| 0040 0000 | PCI system error | PCI bus timing error |
| 0020 0000 | PCI master abort | The NIC has received a target abort while operating as a bus master. |
| 0010 0000 | PCI target abort | The NIC has received a target abort while operating as a bus master. |
| 0000 0400 | Transmit FIFO underrun | The PCI bus is slow or busy. |