1999-12-04 17:41:31 +00:00
|
|
|
.\" Copyright (c) 1997, 1998, 1999
|
|
|
|
.\" Bill Paul <wpaul@ee.columbia.edu>. All rights reserved.
|
|
|
|
.\"
|
|
|
|
.\" Redistribution and use in source and binary forms, with or without
|
|
|
|
.\" modification, are permitted provided that the following conditions
|
|
|
|
.\" are met:
|
|
|
|
.\" 1. Redistributions of source code must retain the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer.
|
|
|
|
.\" 2. Redistributions in binary form must reproduce the above copyright
|
|
|
|
.\" notice, this list of conditions and the following disclaimer in the
|
|
|
|
.\" documentation and/or other materials provided with the distribution.
|
|
|
|
.\" 3. All advertising materials mentioning features or use of this software
|
|
|
|
.\" must display the following acknowledgement:
|
|
|
|
.\" This product includes software developed by Bill Paul.
|
|
|
|
.\" 4. Neither the name of the author nor the names of any co-contributors
|
|
|
|
.\" may be used to endorse or promote products derived from this software
|
|
|
|
.\" without specific prior written permission.
|
|
|
|
.\"
|
|
|
|
.\" THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
|
|
|
|
.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
|
|
.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
|
|
.\" ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
|
|
|
|
.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
|
|
|
.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
|
|
|
.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
|
|
|
.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
|
|
|
.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
|
|
|
.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
|
|
|
|
.\" THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
.\"
|
|
|
|
.\" $FreeBSD$
|
|
|
|
.\"
|
|
|
|
.Dd November 20, 1999
|
2001-02-20 12:13:29 +00:00
|
|
|
.Dt DC 4
|
2001-07-10 15:31:11 +00:00
|
|
|
.Os
|
1999-12-04 17:41:31 +00:00
|
|
|
.Sh NAME
|
|
|
|
.Nm dc
|
2001-04-18 15:54:10 +00:00
|
|
|
.Nd "DEC/Intel 21143 and clone 10/100 ethernet driver"
|
1999-12-04 17:41:31 +00:00
|
|
|
.Sh SYNOPSIS
|
2000-01-23 15:04:20 +00:00
|
|
|
.Cd "device miibus"
|
|
|
|
.Cd "device dc"
|
1999-12-04 17:41:31 +00:00
|
|
|
.Sh DESCRIPTION
|
|
|
|
The
|
|
|
|
.Nm
|
|
|
|
driver provides support for several PCI fast ethernet adapters and
|
|
|
|
embedded controllers based on the following chipsets:
|
|
|
|
.Pp
|
|
|
|
.Bl -bullet -compact -offset indent
|
|
|
|
.It
|
|
|
|
DEC/Intel 21143
|
|
|
|
.It
|
2000-07-17 19:27:41 +00:00
|
|
|
Macronix 98713, 98713A, 98715, 98715A, 98725, 98727 and 98732
|
1999-12-04 17:41:31 +00:00
|
|
|
.It
|
2000-01-27 19:30:31 +00:00
|
|
|
Davicom DM9100, DM9102 and DM9102A
|
1999-12-04 17:41:31 +00:00
|
|
|
.It
|
|
|
|
ASIX Electronics AX88140A and AX88141
|
|
|
|
.It
|
|
|
|
ADMtek AL981 Comet and AN985 Centaur
|
|
|
|
.It
|
|
|
|
Lite-On 82c168 and 82c169 PNIC
|
|
|
|
.It
|
|
|
|
Lite-On/Macronix 82c115 PNIC II
|
2001-12-20 00:02:13 +00:00
|
|
|
.It
|
|
|
|
Xircom X3201 (cardbus only)
|
|
|
|
.It
|
|
|
|
Conexant LANfinity RS7112 (miniPCI)
|
1999-12-04 17:41:31 +00:00
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
All of these chips have the same general register layout, DMA
|
2000-03-01 14:50:24 +00:00
|
|
|
descriptor format and method of operation.
|
|
|
|
All of the clone chips
|
|
|
|
are based on the 21143 design with various modifications.
|
|
|
|
The
|
1999-12-04 17:41:31 +00:00
|
|
|
21143 itself has support for 10baseT, BNC, AUI, MII and symbol
|
|
|
|
media attachments, 10 and 100Mbps speeds in full or half duplex,
|
2000-03-01 14:50:24 +00:00
|
|
|
built in NWAY autonegotiation and wake on LAN.
|
|
|
|
The 21143 also
|
1999-12-04 17:41:31 +00:00
|
|
|
offers several receive filter programming options including
|
|
|
|
perfect filtering, inverse perfect filtering and hash table
|
|
|
|
filtering.
|
|
|
|
.Pp
|
|
|
|
Some clone chips duplicate the 21143 fairly closely while others
|
2001-04-20 03:49:07 +00:00
|
|
|
only maintain superficial similarities.
|
2000-03-01 14:50:24 +00:00
|
|
|
Some support only MII
|
|
|
|
media attachments.
|
|
|
|
Others use different receiver filter programming
|
|
|
|
mechanisms.
|
|
|
|
At least one supports only chained DMA descriptors
|
1999-12-04 17:41:31 +00:00
|
|
|
(most support both chained descriptors and contiguously allocated
|
|
|
|
fixed size rings). Some chips (especially the PNIC) also have
|
2000-03-01 14:50:24 +00:00
|
|
|
peculiar bugs.
|
|
|
|
The
|
1999-12-04 17:41:31 +00:00
|
|
|
.Nm
|
|
|
|
driver does its best to provide generalized support for all
|
2002-01-21 12:09:13 +00:00
|
|
|
of these chipsets in order to keep special case code to a minimum.
|
1999-12-04 17:41:31 +00:00
|
|
|
.Pp
|
|
|
|
These chips are used by many vendors which makes it
|
2001-04-20 03:49:07 +00:00
|
|
|
difficult to provide a complete list of all supported cards.
|
2000-03-01 14:50:24 +00:00
|
|
|
The
|
1999-12-04 17:41:31 +00:00
|
|
|
following NICs are known to work with the
|
|
|
|
.Nm
|
|
|
|
driver at this time:
|
|
|
|
.Pp
|
|
|
|
.Bl -bullet -compact -offset indent
|
|
|
|
.It
|
|
|
|
Digital DE500-BA 10/100 (21143, non-MII)
|
|
|
|
.It
|
|
|
|
Built in DE500-BA on DEC Alpha workstations (21143, non-MII)
|
|
|
|
.It
|
2000-01-27 19:30:31 +00:00
|
|
|
Built in 10Mbps only ethernet on Compaq Presario 7900 series
|
|
|
|
desktops (21143, non-MII)
|
|
|
|
.It
|
|
|
|
Built in ethernet on LinkSys EtherFast 10/100 Instant GigaDrive (DM9102, MII)
|
|
|
|
.It
|
1999-12-04 17:41:31 +00:00
|
|
|
Kingston KNE100TX (21143, MII)
|
|
|
|
.It
|
|
|
|
D-Link DFE-570TX (21143, MII, quad port)
|
|
|
|
.It
|
2000-07-17 19:27:41 +00:00
|
|
|
NDC SOHOware SFA110A (98713A)
|
|
|
|
.It
|
|
|
|
NDC SOHOware SFA110A Rev B4 (98715AEC-C)
|
1999-12-04 17:41:31 +00:00
|
|
|
.It
|
|
|
|
SVEC PN102-TX (98713)
|
|
|
|
.It
|
2000-01-27 19:30:31 +00:00
|
|
|
CNet Pro120A (98715A or 98713A) and CNet Pro120B (98715)
|
1999-12-04 17:41:31 +00:00
|
|
|
.It
|
|
|
|
Compex RL100-TX (98713 or 98713A)
|
|
|
|
.It
|
|
|
|
LinkSys LNE100TX (PNIC 82c168, 82c169)
|
|
|
|
.It
|
|
|
|
NetGear FA310-TX Rev. D1, D2 or D3 (PNIC 82c169)
|
|
|
|
.It
|
|
|
|
Matrox FastNIC 10/100 (PNIC 82c168, 82c169)
|
|
|
|
.It
|
|
|
|
Kingston KNE110TX (PNIC 82c169)
|
|
|
|
.It
|
|
|
|
LinkSys LNE100TX v2.0 (PNIC II 82c115)
|
|
|
|
.It
|
|
|
|
Jaton XpressNet (Davicom DM9102)
|
|
|
|
.It
|
|
|
|
Alfa Inc GFC2204 (ASIX AX88140A)
|
|
|
|
.It
|
|
|
|
CNet Pro110B (ASIX AX88140A)
|
2000-08-23 00:44:23 +00:00
|
|
|
.It
|
|
|
|
LinkSys LNE100TX v4.0/4.1 (ADMtek AN985 Centaur-P)
|
1999-12-04 17:41:31 +00:00
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
The
|
|
|
|
.Nm
|
|
|
|
driver supports the following media types:
|
|
|
|
.Pp
|
|
|
|
.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
|
|
|
|
.It autoselect
|
|
|
|
Enable autoselection of the media type and options.
|
|
|
|
The user can manually override
|
|
|
|
the autoselected mode by adding media options to the
|
|
|
|
.Pa /etc/rc.conf
|
|
|
|
file.
|
|
|
|
.Pp
|
|
|
|
Note: the built-in NWAY autonegotiation on the original PNIC 82c168
|
|
|
|
chip is horribly broken and is not supported by the
|
|
|
|
.Nm
|
2001-04-20 03:49:07 +00:00
|
|
|
driver at this time (see the
|
|
|
|
.Sx BUGS
|
|
|
|
section for details).
|
2000-03-01 14:50:24 +00:00
|
|
|
The original 82c168 appears
|
1999-12-04 17:41:31 +00:00
|
|
|
on very early revisions of the LinkSys LNE100TX and Matrox FastNIC.
|
|
|
|
.It 10baseT/UTP
|
2000-03-01 14:50:24 +00:00
|
|
|
Set 10Mbps operation.
|
|
|
|
The
|
1999-12-04 17:41:31 +00:00
|
|
|
.Ar mediaopt
|
|
|
|
option can also be used to enable
|
|
|
|
.Ar full-duplex
|
2000-03-01 14:50:24 +00:00
|
|
|
operation.
|
|
|
|
Not specifying
|
1999-12-04 17:41:31 +00:00
|
|
|
.Ar full duplex
|
|
|
|
implies
|
|
|
|
.Ar half-duplex
|
|
|
|
mode.
|
|
|
|
.It 100baseTX
|
2000-03-01 14:50:24 +00:00
|
|
|
Set 100Mbps (fast ethernet) operation.
|
|
|
|
The
|
1999-12-04 17:41:31 +00:00
|
|
|
.Ar mediaopt
|
|
|
|
option can also be used to enable
|
|
|
|
.Ar full-duplex
|
2000-03-01 14:50:24 +00:00
|
|
|
operation.
|
|
|
|
Not specifying
|
1999-12-04 17:41:31 +00:00
|
|
|
.Ar full duplex
|
|
|
|
implies
|
|
|
|
.Ar half-duplex
|
|
|
|
mode.
|
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
The
|
|
|
|
.Nm
|
|
|
|
driver supports the following media options:
|
|
|
|
.Pp
|
|
|
|
.Bl -tag -width xxxxxxxxxxxxxxxxxxxx
|
|
|
|
.It full-duplex
|
2000-03-01 14:50:24 +00:00
|
|
|
Force full duplex operation.
|
|
|
|
The interface will operate in
|
1999-12-04 17:41:31 +00:00
|
|
|
half duplex mode if this media option is not specified.
|
|
|
|
.El
|
|
|
|
.Pp
|
|
|
|
Note that the 100baseTX media type may not be available on certain
|
|
|
|
Intel 21143 adapters which support 10mbps media attachments only.
|
|
|
|
For more information on configuring this device, see
|
|
|
|
.Xr ifconfig 8 .
|
|
|
|
.Sh DIAGNOSTICS
|
|
|
|
.Bl -diag
|
|
|
|
.It "dc%d: couldn't map ports/memory"
|
|
|
|
A fatal initialization error has occurred.
|
|
|
|
.It "dc%d: couldn't map interrupt"
|
|
|
|
A fatal initialization error has occurred.
|
|
|
|
.It "dc%d: watchdog timeout"
|
|
|
|
A packet was queued for transmission and a transmit command was
|
2001-04-20 03:49:07 +00:00
|
|
|
issued, but the device failed to acknowledge the transmission
|
2000-03-01 14:50:24 +00:00
|
|
|
before a timeout expired.
|
|
|
|
This can happen if the device is unable
|
1999-12-04 17:41:31 +00:00
|
|
|
to deliver interrupts for some reason, of if there is a problem with
|
2001-04-20 03:49:07 +00:00
|
|
|
the network connection (cable or network equipment) that results in a loss
|
|
|
|
of link.
|
1999-12-04 17:41:31 +00:00
|
|
|
.It "dc%d: no memory for rx list"
|
|
|
|
The driver failed to allocate an mbuf for the receiver ring.
|
|
|
|
.It "dc%d: TX underrun -- increasing TX threshold"
|
|
|
|
The device generated a transmit underrun error while attempting to
|
2000-03-01 14:50:24 +00:00
|
|
|
DMA and transmit a packet.
|
|
|
|
This happens if the host is not able to
|
|
|
|
DMA the packet data into the NIC's FIFO fast enough.
|
|
|
|
The driver
|
1999-12-04 17:41:31 +00:00
|
|
|
will dynamically increase the transmit start threshold so that
|
|
|
|
more data must be DMAed into the FIFO before the NIC will start
|
|
|
|
transmitting it onto the wire.
|
|
|
|
.It "dc%d: TX underrun -- using store and forward mode"
|
|
|
|
The device continued to generate transmit underruns even after all
|
|
|
|
possible transmit start threshold settings had been tried, so the
|
2000-03-01 14:50:24 +00:00
|
|
|
driver programmed the chip for store and forward mode.
|
|
|
|
In this mode,
|
1999-12-04 17:41:31 +00:00
|
|
|
the NIC will not begin transmission until the entire packet has been
|
|
|
|
transfered into its FIFO memory.
|
|
|
|
.It "dc%d: chip is in D3 power state -- setting to D0"
|
|
|
|
This message applies only to adapters which support power
|
2000-03-01 14:50:24 +00:00
|
|
|
management.
|
|
|
|
Some operating systems place the controller in low power
|
1999-12-04 17:41:31 +00:00
|
|
|
mode when shutting down, and some PCI BIOSes fail to bring the chip
|
2000-03-01 14:50:24 +00:00
|
|
|
out of this state before configuring it.
|
|
|
|
The controller loses all of
|
1999-12-04 17:41:31 +00:00
|
|
|
its PCI configuration in the D3 state, so if the BIOS does not set
|
|
|
|
it back to full power mode in time, it won't be able to configure it
|
2000-03-01 14:50:24 +00:00
|
|
|
correctly.
|
|
|
|
The driver tries to detect this condition and bring
|
1999-12-04 17:41:31 +00:00
|
|
|
the adapter back to the D0 (full power) state, but this may not be
|
2000-03-01 14:50:24 +00:00
|
|
|
enough to return the driver to a fully operational condition.
|
|
|
|
If
|
1999-12-04 17:41:31 +00:00
|
|
|
you see this message at boot time and the driver fails to attach
|
2000-07-13 13:49:36 +00:00
|
|
|
the device as a network interface, you will have to perform a second
|
1999-12-04 17:41:31 +00:00
|
|
|
warm boot to have the device properly configured.
|
|
|
|
.Pp
|
|
|
|
Note that this condition only occurs when warm booting from another
|
2000-03-01 14:50:24 +00:00
|
|
|
operating system.
|
|
|
|
If you power down your system prior to booting
|
1999-12-04 17:41:31 +00:00
|
|
|
.Fx ,
|
|
|
|
the card should be configured correctly.
|
|
|
|
.El
|
|
|
|
.Sh SEE ALSO
|
|
|
|
.Xr arp 4 ,
|
2003-02-15 17:12:53 +00:00
|
|
|
.Xr miibus 4 ,
|
2001-07-14 19:41:16 +00:00
|
|
|
.Xr netintro 4 ,
|
2000-05-04 17:40:13 +00:00
|
|
|
.Xr ng_ether 4 ,
|
|
|
|
.Xr ifconfig 8
|
1999-12-04 17:41:31 +00:00
|
|
|
.Rs
|
|
|
|
.%T ADMtek AL981, AL983 and AL985 data sheets
|
|
|
|
.%O http://www.admtek.com.tw
|
|
|
|
.Re
|
|
|
|
.Rs
|
|
|
|
.%T ASIX Electronics AX88140A and AX88141 data sheets
|
|
|
|
.%O http://www.asix.com.tw
|
|
|
|
.Re
|
|
|
|
.Rs
|
|
|
|
.%T Davicom DM9102 data sheet
|
|
|
|
.%O http://www.davicom8.com
|
|
|
|
.Re
|
|
|
|
.Rs
|
|
|
|
.%T Intel 21143 Hardware Reference Manual
|
|
|
|
.%O http://developer.intel.com
|
|
|
|
.Re
|
|
|
|
.Rs
|
|
|
|
.%T Macronix 98713/A, 98715/A and 98725 data sheets
|
|
|
|
.%O http://www.macronix.com
|
|
|
|
.Re
|
|
|
|
.Rs
|
|
|
|
.%T Macronix 98713/A and 98715/A app notes
|
|
|
|
.%O http://www.macronix.com
|
|
|
|
.Re
|
|
|
|
.Sh HISTORY
|
|
|
|
The
|
|
|
|
.Nm
|
|
|
|
device driver first appeared in
|
|
|
|
.Fx 4.0 .
|
|
|
|
.Sh AUTHORS
|
|
|
|
The
|
|
|
|
.Nm
|
|
|
|
driver was written by
|
|
|
|
.An Bill Paul Aq wpaul@ee.columbia.edu .
|
|
|
|
.Sh BUGS
|
|
|
|
The Macronix application notes claim that in order to put the
|
2000-07-13 13:49:36 +00:00
|
|
|
chips in normal operation, the driver must write a certain magic
|
2000-03-01 14:50:24 +00:00
|
|
|
number into the CSR16 register.
|
|
|
|
The numbers are documented in
|
1999-12-04 17:41:31 +00:00
|
|
|
the app notes, but the exact meaning of the bits is not.
|
|
|
|
.Pp
|
|
|
|
The 98713A seems to have a problem with 10Mbps full duplex mode.
|
|
|
|
The transmitter works but the receiver tends to produce many
|
2000-03-01 14:50:24 +00:00
|
|
|
unexplained errors leading to very poor overall performance.
|
|
|
|
The
|
|
|
|
98715A does not exhibit this problem.
|
|
|
|
All other modes on the
|
1999-12-04 17:41:31 +00:00
|
|
|
98713A seem to work correctly.
|
|
|
|
.Pp
|
|
|
|
The original 82c168 PNIC chip has built in NWAY support which is
|
|
|
|
used on certain early LinkSys LNE100TX and Matrox FastNIC cards,
|
|
|
|
however it is horribly broken and difficult to use reliably.
|
|
|
|
Consequently, autonegotiation is not currently supported for this
|
|
|
|
chipset: the driver defaults the NIC to 10baseT half duplex, and it's
|
|
|
|
up to the operator to manually select a different mode if necessary.
|
|
|
|
(Later cards use an external MII transceiver to implement NWAY
|
|
|
|
autonegotiation and work correctly.)
|
|
|
|
.Pp
|
|
|
|
The
|
|
|
|
.Nm
|
|
|
|
driver programs 82c168 and 82c169 PNIC chips to use the store and
|
2000-03-01 14:50:24 +00:00
|
|
|
forward setting for the transmit start threshold by default.
|
|
|
|
This
|
1999-12-04 17:41:31 +00:00
|
|
|
is to work around problems with some NIC/PCI bus combinations where
|
|
|
|
the PNIC can transmit corrupt frames when operating at 100Mbps,
|
|
|
|
probably due to PCI DMA burst transfer errors.
|
|
|
|
.Pp
|
2000-01-27 19:30:31 +00:00
|
|
|
The 82c168 and 82c169 PNIC chips also have a receiver bug that
|
1999-12-04 17:41:31 +00:00
|
|
|
sometimes manifests during periods of heavy receive and transmit
|
|
|
|
activity, where the chip will improperly DMA received frames to
|
2000-03-01 14:50:24 +00:00
|
|
|
the host.
|
|
|
|
The chips appear to upload several kilobytes of garbage
|
1999-12-04 17:41:31 +00:00
|
|
|
data along with the received frame data, dirtying several RX buffers
|
2000-03-01 14:50:24 +00:00
|
|
|
instead of just the expected one.
|
|
|
|
The
|
1999-12-04 17:41:31 +00:00
|
|
|
.Nm
|
2001-04-20 03:49:07 +00:00
|
|
|
driver detects this condition and will salvage the frame; however,
|
1999-12-04 17:41:31 +00:00
|
|
|
it incurs a serious performance penalty in the process.
|
|
|
|
.Pp
|
|
|
|
The PNIC chips also sometimes generate a transmit underrun error when
|
|
|
|
the driver attempts to download the receiver filter setup frame, which
|
2000-03-01 14:50:24 +00:00
|
|
|
can result in the receive filter being incorrectly programmed.
|
|
|
|
The
|
1999-12-04 17:41:31 +00:00
|
|
|
.Nm
|
|
|
|
driver will watch for this condition and requeue the setup frame until
|
|
|
|
it is transfered successfully.
|
|
|
|
.Pp
|
|
|
|
The ADMtek AL981 chip (and possibly the AN985 as well) has been observed
|
|
|
|
to sometimes wedge on transmit: this appears to happen when the driver
|
|
|
|
queues a sequence of frames which cause it to wrap from the end of the
|
2001-04-20 03:49:07 +00:00
|
|
|
transmit descriptor ring back to the beginning.
|
2000-03-01 14:50:24 +00:00
|
|
|
The
|
1999-12-04 17:41:31 +00:00
|
|
|
.Nm
|
2002-01-21 12:09:13 +00:00
|
|
|
driver attempts to avoid this condition by not queuing any frames past
|
1999-12-04 17:41:31 +00:00
|
|
|
the end of the transmit ring during a single invocation of the
|
|
|
|
.Fn dc_start
|
2000-03-01 14:50:24 +00:00
|
|
|
routine.
|
|
|
|
This workaround has a negligible impact on transmit performance.
|