NAME | SYNOPSIS | FEATURES | DESCRIPTION | ATTRIBUTES | SEE ALSO
drv/src/net/ether/fcc/fccEther.c - driver code drv/src/net/ether/fcc/fccEtherProp.h - driver specific properties
DRV
The fccEther Ethernet driver implements the ether device driver interface.
The driver works on a quicc fast communication controller (FCC) connected to an MII interface. The driver uses the quicc bus driver interface provided by a parent bus driver.
The fccEther driver does not provide the drv_probe() routine. In other words, the fccEther driver does not enumerate the bus, nor does it detect an fccEther device or create an associated device node. When the fccEther driver is used, associated device nodes should be created either statically by a boot program or dynamically by a separate bus enumerator driver. Such an enumerator driver could be developed for this particular bus architecture.
The fccEther driver provides the drv_bind() routine. This routine examines the device node properties in order to recognize an fccEther compatible device. The routine checks for a QUICC_PROP_CHANNEL property matching an fcc device in Ethernet mode. If the check is positive, the drv_bind() routine binds the driver to the device node attaching a PROP_DRIVER property to it. The property value specifies the fccEther driver name. The parent bus driver uses such a property to determine the name of the driver servicing the device. In other words, via the PROP_DRIVER property, the driver gives its name to the parent bus driver asking it to invoke the drv_init() routine on that device. Note that the drv_bind() routine does nothing if a PROP_DRIVER property is already present in the device node. In other words, the drv_bind()routine does not override existing driver-to-device binding.
The driver provides the drv_unload() entry and supports the driver component unloading. This allows the driver component to be unloaded if it is no longer being used and if it has been dynamically loaded at run time.
The driver supports the QUICC_SYS_SHUTDOWN and QUICC_DEV_SHUTDOWN bus events specified by the quicc bus driver interface.
The Table below summarizes characteristics of the fccEther Ethernet driver.
driver name: | "sun:quicc-fcc-ether" |
hardware: | Quicc/fcc connected to MII |
exported interface: | "ether" (ETHER_CLASS) |
exported interface version: | 0 (ETHER_VERSION_INITIAL) |
imported parent interface: | "quicc" (QUICC_CLASS) |
minimal parent interface version: | 0 (QUICC_VERSION_INITIAL) |
device probing (auto-detection): | not supported |
driver-to-device binding: | supported (on channel basis) |
driver unloading: | supported |
system (emergency) shut-down: | supported |
normal device shut-down: | supported |
hot-plug (surprise) device removal: | not supported |
The table below lists device node properties used by the fccEther driver.
Note that the column "m/o" specifies whether a given property is mandatory or optional. For optional properties, the column "default value" shows a default value which is used by the driver when a given property is not specified.
Name | Alias | Type | m/o | Default Value |
---|---|---|---|---|
"mem-rgn" | QUICC_PROP_MEM_RGN | QuiccPropMemRgn | m | |
"intr" | QUICC_PROP_INTR | QuiccPropIntr | m | |
"channel" | QUICC_PROP_CHANNEL | QuiccPropChannel | m | |
"ether-addr" | ETHER_PROP_ADDR | EtherPropAddr | o | ENVIRON-MENT |
"phy-addr" | MII_PROP_PHY_ADDR | MiiPropPhyAddr | o | 0 |
"tx-desc-nb" | FCCETHER_PROP_TX_DESC_NB | FccEtherPropDescNb | o | 8 |
"rx-desc-nb | FCCETHER_PROP_RX_DESC_NB | FccEtherPropDescNb | o | 8 |
"tx-buf-size" | FCCETHER_PROP_TX_BUF_SZ | FccEtherPropBufSz | o | 1514 bytes |
"rx-buf-size" | FCCETHER_PROP_RX_BUF_SZ | FccEtherPropBufSz | o | 1514 bytes |
The QUICC_PROP_MEM_RGN property specifies the quicc bus memory mapped regions used by the driver:
index FCCETHER_REG is used to map fcc registers
index FCCETHER_PARAM is used to map fcc parameters
The QUICC_PROP_INTR property specifies the interrupt used by the device.
The QUICC_PROP_CHANNEL property specifies the channel used by the device.
The ETHER_PROP_ADDR property specifies the Ethernet address. If the property is not present, the driver tries to get the Ethernet address from the "ETHER_ADDR" environment variable, and creates the property in the device node.
The MII_PROP_PHY_ADDR property specifies the address on the MII bus of the transceiver (PHY) to which the FCC device is connected. By default, PHY address 0 is used.
The FCCETHER_PROP_TX_DESC_NB specifies the number of descriptors to be allocated in the transmit ring. By default, 8 descriptors are used.
The FCCETHER_PROP_RX_DESC_NB specifies the number of descriptors to be allocated in the receive ring. By default, 8 descriptors are used.
The FCCETHER_PROP_TX_BUF_SZ specifies the size of the DMA buffers to be allocated and bound to each descriptor in the transmit ring. By default, each buffer has a size of 1514 bytes, which is the maximum size of an Ethernet frame.
The FCCETHER_PROP_RX_BUF_SZ specifies the size of the DMA buffers to be allocated and bound to each descriptor in the receive ring. By default, each buffer has a size of 1514 bytes, which is the maximum size of an Ethernet frame. Thus, the total size of DMA memory allocated by the driver will be:
FCCETHER_PROP_TX_DESC_NB * FCCETHER_PROP_TX_BUF_SZ for transmission, and
FCCETHER_PROP_RX_DESC_NB * FCCETHER_PROP_RX_BUF_SZ for reception
Note that the driver is capable of sending and receiving an Ethernet frame using multiple descriptors in a ring. But it is not able to share the memory buffer, bound to one descriptor, between multiple Ethernet frames. In other words, configuring buffer sizes with big values will lead to poor memory usage, with small Ethernet frames.
The table below lists device node properties added by the fccEther driver, which may be used by the driver clients.
Name | Alias | Type |
---|---|---|
"link-throughput" | ETHER_PROP_THROUGHPUT | EtherPropThroughput |
"ether-addr" | ETHER_PROP_ADDR | EtherPropAddr |
"best-out-size" | ETHER_PROP_BEST_OUTSIZE | EtherPropBestOutsize |
"best-in-size" | ETHER_PROP_BEST_INSIZE | EtherPropBestInsize |
The ETHER_PROP_THROUGHPUT property specifies the throughput of the Ethernet link.
The ETHER_PROP_ADDR property specifies the Ethernet address. Note that the driver adds this property to the device node only if it does not already exist.
See attributes(5) for descriptions of the following attributes:
ATTRIBUTE TYPE | ATTRIBUTE VALUE |
---|---|
Interface Stability | Evolving |
NAME | SYNOPSIS | FEATURES | DESCRIPTION | ATTRIBUTES | SEE ALSO