Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DC(4)			    Kernel Interfaces Manual			 DC(4)

NAME
       dc -- DEC/Intel 21143 and clone 10/100 Ethernet driver

SYNOPSIS
       device miibus
       device dc

DESCRIPTION
       The  dc	driver provides	support	for several PCI	Fast Ethernet adapters
       and embedded controllers	based on the the DEC/Intel 21143  chipset  and
       clones.

       All  of	supported  chipsets have the same general register layout, DMA
       descriptor format and method of operation.  All of the clone chips  are
       based on	the 21143 design with various modifications.  The 21143	itself
       has support for 10baseT,	BNC, AUI, MII and symbol media attachments, 10
       and  100Mbps  speeds in full or half duplex, built in NWAY autonegotia-
       tion and	wake on	LAN.  The 21143	also  offers  several  receive	filter
       programming  options  including perfect filtering, inverse perfect fil-
       tering and hash table filtering.

       Some clone chips	duplicate the 21143 fairly closely while  others  only
       maintain	superficial similarities.  Some	support	only MII media attach-
       ments.	Others	use  different receiver	filter programming mechanisms.
       At least	one supports only chained DMA descriptors (most	 support  both
       chained descriptors and contiguously allocated fixed size rings).  Some
       chips  (especially  the	PNIC)  also have peculiar bugs.	 The dc	driver
       does its	best to	provide	generalized support for	all of these  chipsets
       in order	to keep	special	case code to a minimum.

       These  chips  are used by many vendors which makes it difficult to pro-
       vide a complete list of all supported cards.

       The dc driver supports the following media types:

       autoselect	     Enable autoselection of the media	type  and  op-
			     tions.  The user can manually override the	autos-
			     elected  mode  by	adding	media  options	to the
			     /etc/rc.conf file.

			     Note: the built-in	NWAY  autonegotiation  on  the
			     original  PNIC 82c168 chip	is horribly broken and
			     is	not supported by the dc	driver	at  this  time
			     (see the "BUGS" section for details).  The	origi-
			     nal 82c168	appears	on very	early revisions	of the
			     LinkSys LNE100TX and Matrox FastNIC.

       10baseT/UTP	     Set  10Mbps  operation.   The mediaopt option can
			     also be used  to  enable  full-duplex  operation.
			     Not  specifying  full  duplex implies half-duplex
			     mode.

       100baseTX	     Set  100Mbps  (Fast  Ethernet)  operation.	   The
			     mediaopt  option  can  also  be  used  to	enable
			     full-duplex  operation.   Not   specifying	  full
			     duplex implies half-duplex	mode.

       The dc driver supports the following media options:

       full-duplex	     Force  full duplex	operation.  The	interface will
			     operate in	half duplex mode if this media	option
			     is	not specified.

       Note  that the 100baseTX	media type may not be available	on certain In-
       tel 21143 adapters which	support	10Mbps media  attachments  only.   For
       more information	on configuring this device, see	ifconfig(8).

HARDWARE
       The dc driver provides support for the following	chipsets:

          DEC/Intel 21143
          ADMtek  AL981  Comet, AN985 Centaur,	ADM9511	Centaur	II and ADM9513
	   Centaur II
          ASIX	Electronics AX88140A and AX88141
          Conexant LANfinity RS7112 (miniPCI)
          Davicom DM9009, DM9100, DM9102 and DM9102A
          Lite-On 82c168 and 82c169 PNIC
          Lite-On/Macronix 82c115 PNIC	II
          Macronix 98713, 98713A, 98715, 98715A, 98715AEC-C, 98725, 98727 and
	   98732
          Xircom X3201	(cardbus only)

       The following NICs are known to work with the dc	driver at this time:

          3Com	OfficeConnect 10/100B (ADMtek AN985 Centaur-P)
          Abocom FE2500
          Accton EN1217 (98715A)
          Accton EN2242 MiniPCI
          Adico AE310TX (98715A)
          Alfa	Inc GFC2204 (ASIX AX88140A)
          Built in 10Mbps only	Ethernet on Compaq Presario 7900 series	 desk-
	   tops	(21143,	non-MII)
          Built in DE500-BA on	DEC Alpha workstations (21143, non-MII)
          Built in Sun	DMFE 10/100 Mbps Ethernet on Sun Netra X1 and Sun Fire
	   V100	(DM9102A, MII)
          Built  in  Ethernet	on  LinkSys EtherFast 10/100 Instant GigaDrive
	   (DM9102, MII)
          CNet	Pro110B	(ASIX AX88140A)
          CNet	Pro120A	(98715A	or 98713A) and CNet Pro120B (98715)
          Compex RL100-TX (98713 or 98713A)
          D-Link DFE-570TX (21143, MII, quad port)
          Digital DE500-BA 10/100 (21143, non-MII)
          ELECOM Laneed LD-CBL/TXA (ADMtek AN985)
          Hawking CB102 CardBus
          IBM EtherJet	Cardbus	Adapter
          Intel PRO/100 Mobile	Cardbus	(versions that use the X3201 chipset)
          Jaton XpressNet (Davicom DM9102)
          Kingston KNE100TX (21143, MII)
          Kingston KNE110TX (PNIC 82c169)
          LinkSys LNE100TX (PNIC 82c168, 82c169)
          LinkSys LNE100TX v2.0 (PNIC II 82c115)
          LinkSys LNE100TX v4.0/4.1 (ADMtek AN985 Centaur-P)
          Matrox FastNIC 10/100 (PNIC 82c168, 82c169)
          Melco LGY-PCI-TXL
          Microsoft MN-120 10/100 CardBus (ADMTek Centaur-C)
          Microsoft MN-130 10/100 PCI (ADMTek Centaur-P)
          NDC SOHOware	SFA110A	(98713A)
          NDC SOHOware	SFA110A	Rev B4 (98715AEC-C)
          NetGear FA310-TX Rev. D1, D2	or D3 (PNIC 82c169)
          Netgear FA511
          PlaneX FNW-3602-T (ADMtek AN985)
          SMC EZ Card 10/100 1233A-TX (ADMtek AN985)
          SVEC	PN102-TX (98713)
          Xircom Cardbus Realport
          Xircom Cardbus Ethernet 10/100
          Xircom Cardbus Ethernet II 10/100

NOTES
       On sparc64 the dc driver	respects the local-mac-address?	system config-
       uration variable	for the	built in Sun DMFE 10/100 Mbps Ethernet	inter-
       faces  on  Sun  Netra  X1 and Sun Fire V100.  This system configuration
       variable	can be set in the Open Firmware	boot monitor using the	setenv
       command	or by eeprom(8).  If set to "false" (the default), the dc dri-
       ver will	use the	system's default MAC address for both of the built  in
       devices.	 If set	to "true", the unique MAC address of each interface is
       used rather than	the system's default MAC address.

DIAGNOSTICS
       dc%d:  couldn't	map ports/memory  A fatal initialization error has oc-
       curred.

       dc%d: couldn't map interrupt  A	fatal  initialization  error  has  oc-
       curred.

       dc%d:  watchdog	timeout	   A  packet was queued	for transmission and a
       transmit	command	was issued, but	the device failed to  acknowledge  the
       transmission  before  a timeout expired.	 This can happen if the	device
       is unable to deliver interrupts for some	reason,	of if there is a prob-
       lem with	the network connection (cable or network equipment)  that  re-
       sults in	a loss of link.

       dc%d:  no memory	for rx list  The driver	failed to allocate an mbuf for
       the receiver ring.

       dc%d: TX	underrun -- increasing TX threshold  The  device  generated  a
       transmit	 underrun error	while attempting to 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	 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.

       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 driver	 programmed  the  chip
       for  store  and	forward	 mode.	 In  this mode,	the NIC	will not begin
       transmission until the entire packet has	been transfered	into its  FIFO
       memory.

       dc%d:  chip is in D3 power state	-- setting to D0  This message applies
       only to adapters	which support power management.	 Some  operating  sys-
       tems  place  the	 controller  in	low power mode when shutting down, and
       some PCI	BIOSes fail to bring the chip out of this state	before config-
       uring it.  The controller loses all of 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	correctly.  The	driver tries to	detect
       this condition and bring	the adapter back to the	D0 (full power)	state,
       but this	may not	be enough to return the	driver to a fully  operational
       condition.   If	you see	this message at	boot time and the driver fails
       to attach the device as a network interface, you	will have to perform a
       second warm boot	to have	the device properly configured.

       Note that this condition	only occurs when warm booting from another op-
       erating system.	If  you	 power	down  your  system  prior  to  booting
       FreeBSD,	the card should	be configured correctly.

SEE ALSO
       arp(4), miibus(4), netintro(4), ng_ether(4), eeprom(8), ifconfig(8)

       ADMtek AL981, AL983 and AL985 data sheets, http://www.admtek.com.tw.

       ASIX	Electronics	AX88140A     and    AX88141    data    sheets,
       http://www.asix.com.tw.

       Davicom DM9102 data sheet, http://www.davicom8.com.

       Intel 21143 Hardware Reference Manual, http://developer.intel.com.

       Macronix	   98713/A,	98715/A	    and	    98725     data     sheets,
       http://www.macronix.com.

       Macronix	98713/A	and 98715/A app	notes, http://www.macronix.com.

HISTORY
       The dc device driver first appeared in FreeBSD 4.0.

AUTHORS
       The dc driver was written by Bill Paul <wpaul@ee.columbia.edu>.

BUGS
       The  Macronix application notes claim that in order to put the chips in
       normal operation, the driver must write a certain magic number into the
       CSR16 register.	The numbers are	documented in the app notes,  but  the
       exact meaning of	the bits is not.

       The  98713A  seems to have a problem with 10Mbps	full duplex mode.  The
       transmitter works but the receiver tends	to  produce  many  unexplained
       errors  leading	to very	poor overall performance.  The 98715A does not
       exhibit this problem.  All other	modes on the 98713A seem to work  cor-
       rectly.

       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, au-
       tonegotiation 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 ex-
       ternal  MII transceiver to implement NWAY autonegotiation and work cor-
       rectly.)

       The dc driver programs 82c168 and 82c169	PNIC chips to  use  the	 store
       and  forward setting for	the transmit start threshold by	default.  This
       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.

       The  82c168  and	 82c169	PNIC chips also	have a receiver	bug that some-
       times manifests during periods of heavy receive and transmit  activity,
       where  the  chip	 will improperly DMA received frames to	the host.  The
       chips appear to upload several kilobytes	of garbage data	along with the
       received	frame data, dirtying several RX	buffers	instead	 of  just  the
       expected	 one.	The  dc	driver detects this condition and will salvage
       the frame; however, it incurs a	serious	 performance  penalty  in  the
       process.

       The  PNIC  chips	also sometimes generate	a transmit underrun error when
       the driver attempts to download the receiver filter setup frame,	 which
       can  result in the receive filter being incorrectly programmed.	The dc
       driver will watch for this condition and	requeue	the setup frame	 until
       it is transfered	successfully.

       The  ADMtek  AL981  chip	 (and possibly the AN985 as well) has been ob-
       served 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 transmit descriptor ring back to the beginning.  The  dc	driver
       attempts	to avoid this condition	by not queuing any frames past the end
       of  the transmit	ring during a single invocation	of the dc_start() rou-
       tine.  This workaround has a negligible impact on transmit performance.

FreeBSD	5.3			August 15, 2004				 DC(4)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=dc&sektion=4&manpath=FreeBSD+5.3-RELEASE>

home | help