Somewhere along the way, the DEC 21x4x chip ended up being a commonly
"cloned"
chip. Unlike other "cloned" Ethernet devices, such as the NE2000,
the compatibility of the DEC 21x4x clones is imperfect at best. A
better word might be "similar" than "clones", similar in the sense that
if you have a working driver for one type of chip, another can probably
be supported with minor tweaks to the driver, but blind compatibility is
not to be expected.. These devices range in performance from junk
to quite good. You are probably wondering "Which are good?
Which are junk?". I don't have an answer at this time.
OpenBSD has not one but TWO drivers which support 21x4x-like chips,
'de' and 'dc', and trying to discern the difference between them from the
man pages was not overly productive (at least for me).
dc(4) is a modular driver was written from scratch for the 21143 and similar chips. Bus interfaces modules are separated for PCI and CardBus, as are the various PHY options.
At the moment, the 'de' driver is loaded with higher priority than the 'dc' driver -- this means that if your board COULD be handled by the 'de', it will be..even if 'dc' would do better. This means if you need or wish to use the 'dc' driver instead, you will need to disable the 'de' driver. It was hoped this would change for OpenBSD 3.0, but it doesn't appear to have.
This is done by User Kernel Configuration (UKC), either temporarily at boot, or permanently using the config command.
To make a temporary change, suitable for installation or to get
yourself to where you can do a permanent change, when the system first
boots, it will display a prompt that looks like:
boot>
At this prompt, enter 'boot -c':
boot> boot -c
This will load the kernel, but give you the UKC prompt before you get
too far in the boot.
UKC>
At this point, you can give the "disable de" command:
UKC>disable de
UKC>quit
and the boot will resume, this time without the 'de'.
To make this change permanent, you have two options:
1) Build a new kernel
with de disabled.
2) Disable the de driver permanently in the kernel:
# config -ef /bsdTa-da! No more de.
OpenBSD 2.9-current (RAID) #1: Thu Jun 28 09:47:40 EDT 2001
njh@devl:/usr/src/sys/arch/i386/compile/RAID
Enter 'help' for information
ukc> disable de*
57 de* disabled
ukc> quit
Saving modified kernel.
#
NOTE! If you installed a system using the 'de' driver and decide you would rather use the 'dc' driver, you will have a number of things you will need to change, most likely:
/etc/hostname.de?Do a 'grep de[0123] /etc/*' to look for any other files you need to change.
/etc/dhcpd.interfaces
/etc/ipf.rules
/etc/ipnat.rules
Is this too much work to go through? Well, to quote Henning in
one of his messages to me on the subject, "This chip and the cards based
on it are too great not to be used due to a silly driver bug." If
you need a good card for a good price, the challenges are worth the trouble.
Further, the 21143 is used in many (most?) Quad-port
NICs (four complete 10/100 Ethernet ports on one card), and this is a good
reason to look at these chips.
Relatives: Some relatives of the 21143
card (collectively refered to as the 21x4x):
21040, 21041: 10Mbps chips. Run fine
with the de driver.
21140, 21142, 21143: 10/100Mbps chips.
Of these, only the 21143 is currently in production, and the older ones
did not seem to see wide circulation. This family carried the name
"Tulip" when it was labeled by DEC, it appears that since Intel has taken
production over, the "Tulip" name has been lost officially, but many of
us still call it the "DEC Tulip chip"
Cloned: How did other companies "clone" the 21143 without legal problems? Again, links to authoritative sources would be appreciated. I would guess these "clones" got away with it by being sloppy on their duplication. On the other hand, there is plenty of precident for making software and hardware compatable duplicates of successful products, on the other hand, there are also plenty of examples of legal action over this. A related question is why would they "clone" the chip if it is only going to be sorta-compatable?
Monolithic: A driver consisting of the chip driver, the bus interface driver and the PHY driver in one.
Modular: A driver which only supports the chip to the MII point, and uses a separate PHY driver. This potentially not only reduces effort and code size, but also makes it possible that new cards can be supported automatically if they use an already supported chip and and PHY, just in a new combination.
Quad-port: DEC apparently provided a "Reference Design" for a quad-port PCI NIC. These "Reference Designs" are intended to be used to show the proper utilization of a chip, in order to help its acceptance. This reference design was good enough that a number of companies utilize this design in their four-port cards, including Compushack and DLink. Makes sense -- why reinvent the wheel when the chip manufacturer has done the R&D work for you?
dmseg: Henning Brauer has provided me a part of the dmesg from one of his machines which has TWO quad-port Compushack cards in it:
ppb1 at pci0 dev 8 function 0 "DEC DECchip 21152 PCI-PCI" rev 0x03
pci2 at ppb1 bus 2
dc0 at pci2 dev 0 function 0 "DEC DECchip 21142/3" rev 0x41: irq
10 address 00:00:cb:26:11:bc
icsphy0 at dc0 phy 5: ICS1892 10/100 media interface, rev. 0
dc1 at pci2 dev 4 function 0 "DEC DECchip 21142/3" rev 0x41: irq
10 address 00:00:cb:26:11:bc
icsphy1 at dc1 phy 5: ICS1892 10/100 media interface, rev. 0
dc2 at pci2 dev 8 function 0 "DEC DECchip 21142/3" rev 0x41: irq
10 address 00:00:cb:26:11:bc
icsphy2 at dc2 phy 5: ICS1892 10/100 media interface, rev. 0
dc3 at pci2 dev 12 function 0 "DEC DECchip 21142/3" rev 0x41: irq
10 address 00:00:cb:26:11:bc
icsphy3 at dc3 phy 5: ICS1892 10/100 media interface, rev. 0
ppb2 at pci0 dev 9 function 0 "DEC DECchip 21152 PCI-PCI" rev 0x03
pci3 at ppb2 bus 3
dc4 at pci3 dev 0 function 0 "DEC DECchip 21142/3" rev 0x41: irq
11 address 00:00:cb:26:11:cc
icsphy4 at dc4 phy 5: ICS1892 10/100 media interface, rev. 0
dc5 at pci3 dev 4 function 0 "DEC DECchip 21142/3" rev 0x41: irq
11 address 00:00:cb:26:11:cc
icsphy5 at dc5 phy 5: ICS1892 10/100 media interface, rev. 0
dc6 at pci3 dev 8 function 0 "DEC DECchip 21142/3" rev 0x41: irq
11 address 00:00:cb:26:11:cc
icsphy6 at dc6 phy 5: ICS1892 10/100 media interface, rev. 0
dc7 at pci3 dev 12 function 0 "DEC DECchip 21142/3" rev 0x41: irq
11 address 00:00:cb:26:11:cc
icsphy7 at dc7 phy 5: ICS1892 10/100 media interface, rev. 0
You can see quite a few things of interest here -- first entry is the
PCI-PCI bridge. The next four 'dc' devices are on the first card.
Note that all the ports share the same interrupt (something that is quite
permissible in a PCI environment), and have the same MAC address.
You then see another PCI-PCI bridge and another four ports. This
machine has at least three PCI busses on it -- the one on the main board,
and one on each of the two four-port NICs. Eight network ports.
Very nice.
Back to OpenBSD Commonly Encountered Problems page
Holland Consulting home
page
Contact Holland Consulting
since September 10, 2001
(C)opyright 2000, Nick Holland, Holland Consulting