dmfe - Davicom Fast Ethernet driver for Davicom DM9102A
The dmfe Ethernet device provides 100Base-TX networking
interfaces using the Davicom DM9102A chip, which incor-
porates its own internal transceiver.
The dmfe driver is a multithreaded, loadable, clonable,
GLD-based STREAMS driver. Multiple controllers
installed within the system are supported by the driver. The
dmfe driver functions include controller initialization,
frame transmit and receive, promiscuous and multicast sup-
port, and error recovery and reporting.
The 100Base-TX standard specifies an auto-negotiation proto-
col to automatically select the mode and speed of operation.
The internal transceiver is capable of performing autonego-
tiation with the remote-end of the link (link partner) and
receives the capabilities of the remote end. It selects the
highest common denominator mode of operation based on
the priorities. The internal transceiver also supports a
forced-mode of operation under which the driver selects the
APPLICATION PROGRAMMING INTERFACE
The /dev/dmfe cloning character-special device is used to
access all Davicom DM9102A devices installed in the system.
The dmfe driver is dependent on /kernel/misc/gld, a loadable
kernel module that provides the dmfe driver with the DLPI
and STREAMS functionality required of a LAN driver. See
gld(7D) for more details on the primitives supported by the
You must send an explicit DL_ATTACH_REQ message to associate
the opened stream with a particular device (ppa). The ppa ID
is interpreted as an unsigned integer data type and indi-
cates the corresponding device instance (unit) number. If
the ppa field value does not correspond to a valid device
instance number for this system, an error (DL_ERROR_ACK) is
returned. The device is initialized on first attach and de-
initialized (stopped) at last detach.
The values returned by the driver in the DL_INFO_ACK primi-
tive in response to a DL_INFO_REQ are as follows:
o Maximum SDU is 1500 (ETHERMTU - defined in
o Minimum SDU is 0.
o DLSAP address length is 8.
o MAC type is DL_ETHER.
o The sap length value is -2, meaning the physical
address component is followed immediately by a 2-byte
sap component within the DLSAP address.
o The broadcast address value is the Ethernet/IEEE
broadcast address (FF:FF:FF:FF:FF:FF).
Once in the DL_ATTACHED state, you must send a
DL_BIND_REQ to associate a particular Service Access Point
(SAP) with the stream.
By default, the dmfe driver performs auto-negotiation to
select the speed and mode of the link. Link speed and mode
can be 100 Mbps (full or half-duplex) or 10 Mbps (full or
half-duplex) as described in the 100Base-TX standard.
The auto-negotiation protocol automatically selects speed
mode (either 100 Mbps or 10 Mbps) and operation mode (either
full-duplex or half-duplex) as the highest common denomina-
tor supported by both link partners. Because the dmfe device
supports all modes, this effectively selects the highest-
throughput mode supported by the other device.
Alternatively, you can explicitly specify the link parame-
ters by adding entries to the dmfe driver configuration file
(/platform/sun4u/kernel/drv/dmfe.conf). You can set the
speed parameter to 10 or 100 to force dmfe devices to
operate at the specified speed. Additionally, you can set
the full-duplex parameter to 0 or 1 to disable or force
full-duplex operation, respectively.
Note that specifying either "speed" or "full-duplex" expli-
citly disables auto-negotiation. To enable the driver to
determine the appropriate setting for each parameter, you
should always set both parameters. If it is necessary to
force either speed or duplex setting (for example, because
the dmfe device is connected to an ancient device or hub
that does not support auto-negotiation), both parameters
should be explicitly specified to match the requirements of
the external device.
Character special device
dmfe configuration file
See attributes(5) for descriptions of the following attri-
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
| Architecture | x86 |
attributes(5), gld(7D), dlpi(7P), streamio(7I)
Writing Device Drivers
STREAMS Programming Guide
Network Interfaces Programmer's Guide
Man(1) output converted with