EF(4) BSD Programmer's Manual EF(4)NAMEef - 3Com EtherLink III (3C509, 3C509-TP, 3C509-Combo, 3c579, 3c590,
3c595, 3c589) Ethernet interface
SYNOPSIS
ef0 at isa? port 0x250
ef0 at eisa?
ef0 at pci?
ef0 at pcmcia?
DESCRIPTION
The ef interface provides access to a 10 Mb/s and 100 Mb/s Ethernet net-
works. It supports the 3Com 3C509-series ISA bus cards, the 3C579 EISA
card, 3C590-series PCI cards, and 3c589 series PC Card adapters.
ISA cards use a block of 16 i/o ports in range 0x200 through 0x3f0. Each
card is programmed to use the address in the system configuration file.
The block must be aligned on a 16 port boundary. The card uses port
0x100 to configure the base port (this can be modified with configuration
flags if needed). The hardware interrupt level (IRQ) is programmed by
the system at boot time and can be specified in the system configuration
file; a free IRQ will automatically be selected during autoconfiguration
if none is specified. Supported irqs are: 2(9), 3, 5, 7, 10, 11, 12, 15.
The 3C509 should be installed in a 16-bit slot. The initialization rou-
tine will assign sequential unit numbers to 3C509 cards according to
their Ethernet station addresses, these unit numbers will be mixed in
with any EISA or PCI 3C5xx cards in the system.
The ISA (3C509) version of this card gets its I/O address assigned by the
kernel. The IRQ gets allocated by the kernel too. Note that neither port
nor IRQ selection are controlled using the on-board EEPROM; hence, run-
ning the bundled DOS setup software does not affect resource selection.
If there is a need to change IRQ or port, please add something like:
-dev ef0 port=0x260 irq=5
to the boot: prompt or /etc/boot.default.
The EISA and PCI cards automatically configure using the configuration
mechanism of the bus they are on. For the EISA cards the EISA configura-
tion utility must be run to set the IRQ and let the system BIOS know
there is a card present. With PCI cards the IRQ sometimes has to be as-
signed from a BIOS configuration menu (some BIOS's do this automatical-
ly).
The PC Card devices use the standard PC Card configuration mechanism, at
boot time the driver initializes for the possibility of an ef card being
inserted (even if one has not been inserted at boot time). Then when the
card is inserted a free IRQ is assigned and the physical hardware is ini-
tialized.
Each of the host's network addresses are specified at boot time with an
SIOCSIFADDR ioctl. The ef interface employs the address resolution pro-
tocol described in arp(4) to dynamically map between Internet and Ether-
net addresses on the local network.
MEDIA SELECTION
Media selection is performed by ifconfig(8) keywords.
On newer (3c59x) cards the media type is selected at boot time based on
the media type stored in adapter EEPROM. The media type in EEPROM is also
used as the default when the card is first powered up or reset. The cur-
rent media type can always be changed via ifconfig(8), the EEPROM set-
tings simply provide a boot time default. The older 3c509 based adapters
do not provide this feature, they always come up in 10baseT, AUI, or BNC
mode (in that priority order).
It is very important to set the media type (in EEPROM) correctly on cards
that support 100 Mb/s operation, a card set for 100 Mb/s will jam a 10
Mb/s network (as soon as the workstation is powered up), the same is true
of a card configured for 10 Mb/s on a 100 Mb/s network. To be safe: al-
ways use efsetup(8) to configure a new style (3c59x) card before attach-
ing the network cable.
CONFIGURATION FLAGS
Configuration flags are set either in the kernel configuration file or by
overrides passed in from the boot(8) program (perhaps via
/etc/boot.default ). Bits in the configuration flags word are used for
several purposes:
flags=0x0001
Will cause an adapter that appears to be a 3c509 but has the wrong prod-
uct ID (a clone perhaps) to be recognized as a 3c509.
flags=0x0002
Will disable the PCI 3c59x overrun bug workaround.
flags=0x00f0 (bits 4-7)
Modify the default probe port for ISA ef cards (it is normally 0x100).
These bits are added to the IO port address; a flag setting of 0xex would
result in a probe port of 0x1e0 being used. Note that the lower bits of
the flags word are used for other purposes (described above), it is only
possible to modify the probe port in steps of 0x10 addresses.
DIAGNOSTICS
The following diagnostics may be printed during autoconfiguration:
ef1: interfaces: 10BaseT*, 100BaseTX
A list of media supported by the adapter. For 3c59x cards the default me-
dia is marked with a '*' (this is the media type programmed into EEPROM
by the efsetup(8) utility).
ef1: invalid i/o base address %x
Invalid port specification in kernel config file.
ef1: no irq available
Automatic interrupt selection was enabled, but all usable interrupts had
already been claimed by other devices.
ef1: invalid IRQ number %d
Invalid irq specification in kernel config file.
ef2: rxf=49151 txf=16380 roa=47551
This line gives diagnostic information regarding the adapter.
The rxf and txf values are the amount of free receive and transmit FIFO
space (in bytes).
If roa is present, this indicates the adapter is considered defective by
3com, there is a problem that causes data corruption at 10 Mb/s speeds
when a receive FIFO overrun occurs. If a number appears after roa, then a
software workaround to the bug is active and engages after the number of
bytes given have been read from the receive FIFO (during a single inter-
rupt). If roa/fail appears, the receive FIFO is too small to implement
the workaround and network data may be corrupted under heavy load.
ef1: Expected interrupt at IRQ N missing
This message indicates that the driver expected an interrupt at the list-
ed IRQ number but did not receive one. This typically happens on PC Card
devices when the dynamically allocated IRQ does not work for some reason
(the laptop uses it internally for example).
SEE ALSOintro(4), inet(4), arp(4), ifconfig(8), efsetup(8)HISTORY
The ef driver first appeared in BSDI.
BSDI BSD/OS December 12, 1996 3