Networking Concepts and Technology: A Designers Resource
< Day Day Up > |
Sun supports four Fast Ethernet drivers for its range of SPARC platforms:
The following sections describe the details of these interfaces. 10/100 hme Fast Ethernet
The hme interface is available for Sbus systems and PCI bus systems. In both cases, they share the same device driver. The interface at the lowest level provides an RJ-45 twisted-pair Ethernet physical layer that supports auto-negotiation. There are also motherboard implementations using hme that provide a MII connection. This allows an external transceiver to be attached and alternative physical layer interfaces like 100BASE-T4 or 100BASE-SX to be made available. Figure 5-28. Typical hme External Connectors
At a MAC level, the interface stages packets for transmission using a single 256-element descriptor ring array. Once that ring is exhausted, other packets get queued waiting in the stream's queue. When the hardware completes transmission of packets currently occupying space on the ring, the packets waiting on the stream's queue are moved to the descriptor ring. The Rx side of the descriptor ring is again a maximum of 256 elements. Once those elements are exhausted, no further buffering is available for incoming packets and overflows begin to occur. When hme was introduced to the market, 256 descriptors to Tx and Rx were reasonable because the CPU frequencies for that time were around 100 Mhz to 300 Mhz, so the arrival rate of transmission packets posted to the descriptor rings closely matched the transmission capability of the physical media. As time progressed, CPUs became faster and this number of descriptors became inadequate. Often the interface began to exhaust the elements in the transmit ring and incurred more scheduling overhead for transmission. On the Rx side, as CPUs became faster, the ability to receive packets became simpler because less time was required to service each packet. The occupancy on the Rx ring of packets needing to be serviced diminished. The hme interface is limited in tuning capability. If you experience low performance because of overflows or the transmit ring being constantly full, no corrective action is possible. The physical layer of hme is fully configurable using the driver.conf file and ndd command.
Current Device Instance in View for ndd
The current device instance in view allows you to point ndd to a specific device instance that needs configuration. This must be done prior to altering or viewing any of the other parameters or you might not be viewing or altering the correct parameters.
Before you view or alter any of the other parameters, make a quick check of the value of instance to ensure that it is actually pointing to the device you want to view or alter. Operational Mode Parameters
The operational mode parameters adjust the MII capabilities that are used for auto-negotiation. When auto-negotiation is disabled, the highest priority value is taken as the mode of operation. See "Ethernet Physical Layer" on page 152 regarding MII.
If you are using the interactive mode of ndd with this device to alter the adv_100fdx_cap parameter to adv_10hdx_cap, the changes applied to those parameters are not actually applied to the hardware until adv_autoneg_cap is changed to its alternative value and then back again. Transceiver Control Parameter
The hme driver can have an external MII physical layer device connected though the MII interface. In this case, the driver has two choices of physical layer connection to the network. Either connection is valid. Therefore a policy is implemented that assumes that if an external physical layer is attached, it's because the given internal physical layer device doesn't provide the required media, so the driver assumes that the external physical layer device is the one to use. In some cases it might be necessary to override that policy. Therefore the ndd parameter use_int_xcvr is provided.
Inter-Packet Gap Parameters
The Inter-Packet Gap (IPG) parameters are ipg0, ipg1, and ipg2. The total IPG is the sum of ipg1 and ipg2 plus an optional ipg0 that will only be present when the lance_mode parameter is set. The total default IPG is 9.6 microseconds when the link speed set by the auto-negotiation protocol is 10 Mbit/sec. When the link speed is 100 Mbit/sec, the total IPG is 0.96 microseconds. The additional delay set by ipg0 helps to reduce collisions. Systems that have lance_mode enabled might not have enough time on the network. If lance_mode is disabled, the value of ipg0 is ignored and no additional delay is set. Only the delays set by ipg1 and ipg2 are used. Disable lance_mode if other systems keep sending a large number of back-to-back packets. You can add the additional delay by setting the ipg0 parameter, which is the nibble time delay from 0 to 31. Note that nibble time is the time it takes to transfer four bits on the link. If the link speed is 10 Mbit/sec, nibble time is equal to 400 ns. If the link speed is 100 Mbit/sec, nibble time is equal to 40 ns. Note IPG is sometimes increased on older systems using slower NICs, where newer NICs and systems are hogging the network. When a server dominates a half-duplex network it's known as server capture effect.
For example, if the link speed is 10 Mbit/sec and you set ipg0 to 20 nibble times, multiply 20 by 400 ns to get 8000 ns. If the link speed is 100 Mbit/sec and you set ipg0 to 30 nibble times, multiply 30 by 40 ns to get 1200 ns.
All of the IPG parameters can be set using ndd or can be hard-coded into the hme.conf files. Details of the methods of setting these parameters are provided in "Configuring Driver Parameters" on page 238. Local Transceiver Auto-negotiation Capability
The local transceiver auto-negotiation capability parameters are read-only parameters and represent the fixed set of capabilities associated with the current PHY that is in use. This allows an external MII PHY device to be attached to the external MII port. Therefore the capabilities presented in these statistics might vary according to the capabilities of the external MII physical layer device that is attached.
Link Partner Capability
The link partner capability parameters are read-only parameters and represent the fixed set of capabilities associated with the attached link partner set of advertised auto-negotiation parameters. These parameters are only meaningful when auto-negotiation is enabled and can be used in conjunction with the operation parameters to establish why there might be problems bringing up the link.
Current Physical Layer Status
The current physical layer status gives an indication of the state of the link, whether it's up or down, or what speed and duplex it's operating at. These parameters are derived based on the result of establishing the highest priority shared speed and duplex capability when auto-negotiation is enabled. They can be preconfigured with Forced mode.
Note that the physical layer status parameters are only meaningful while ndd is running in interactive mode or while the interface being viewed is already initialized by virtue of the presence of open streams such as snoop -d hme0 or ifconfig hme0 plumb inet up. If these streams don't exist, then the device is uninitialized and the state gets set up when you probe these parameters with ndd. As a result, the parameters are subject to a race between the user viewing them and the link reaching a steady state. This makes these parameters unreliable unless an existing stream is associated with an instance prior to checking. A good rule to follow is to only trust these parameters if the interface is configured up using the ifconfig command. 10/100 qfe Quad Fast Ethernet
The qfe interface was developed based on the same ASIC as the hme, and the driver is very similar in terms of capabilities and limitations. One key difference is that there's no external MII connector and therefore no possibility to use any physical media other than 100BASE-T. Figure 5-29. Typical qfe External Connectors
With the introduction of qfe came the introduction of trunking technology, which will be discussed later. The physical layer of qfe is fully configurable using the driver.conf file and ndd command.
Current Device Instance in View for ndd
The current device instance in view allows you to point ndd to a particular device instance that needs configuration. This must be applied prior to altering or viewing any of the other parameters or you might not be viewing or altering the correct parameters.
Before you view or alter any of the other parameters, make a quick check of the value of instance to ensure that it is actually pointing to the device you want to view or alter. Operational Mode Parameters
The operational mode parameters adjust the MII capabilities that are used for auto-negotiation. When auto-negotiation is disabled, the highest priority value is taken as the mode of operation. See "Fast Ethernet Interfaces" on page 165 regarding MII.
If you are using the interactive mode of ndd with this device to alter the adv_100fdx_cap parameter to adv_10hdx_cap, the changes applied to those parameters are not actually applied to the hardware until adv_autoneg_cap is changed to its alternative value and then back again. Transceiver Control Parameter
The qfe driver has the capability to have an external MII physical layer device connected, but there's no implemented hardware to allow this feature to be utilized. The use_int_xcvr parameter should never be altered in the case of qfe. Inter-Packet Gap Parameters
The Inter-Packet Gap (IPG) parameters are ipg0, ipg1, and ipg2. The total IPG is the sum of ipg1 and ipg2 plus an optional ipg0 that will only be present when the lance_mode parameter is set. The total default IPG is 9.6 microseconds when the link speed set by the auto-negotiation protocol is 10 Mbit/sec. When the link speed is 100 Mbit/sec, the total IPG is 0.96 microseconds. The additional delay set by ipg0 helps to reduce collisions. Systems that have lance_mode enabled might not have enough time on the network. If lance_mode is disabled, the value of ipg0 is ignored and no additional delay is set. Only the delays set by ipg1 and ipg2 are used. Disable lance_mode if other systems keep sending a large number of back-to-back packets. You can add the additional delay by setting the ipg0 parameter, which is the nibble time delay, from 0 to 31. Note that nibble time is the time it takes to transfer four bits on the link. If the link speed is 10 Mbit/sec, nibble time is equal to 400 ns. If the link speed is 100 Mbit/sec, nibble time is equal to 40 ns. For example, if the link speed is 10 Mbit/sec and you set ipg0 to 20 nibble times, multiply 20 by 400 ns to get 800 ns. If the link speed is 100 Mbit/sec, and you set ipg0 to 30 nibble times, multiply 30 by 40 ns to get 120 ns.
All of the IPG parameters can be set using ndd or can be hard-coded into the qfe.conf files. Details about setting these parameters are provided in "Reboot Persistence Using driver.conf" on page 242. Local Transceiver Auto-negotiation Capability
The local transceiver auto-negotiation capability parameters are read-only parameters and represent the fixed set of capabilities associated with the current PHY that is in use. This device allows an external MII PHY device to be attached to the external MII port. Therefore the capabilities presented in these statistics might vary according to the capabilities of the external MII physical layer device that is attached.
Link Partner Capability
The link partner capability parameters are read-only parameters and represent the fixed set of capabilities associated with the attached link partner set of advertised auto-negotiation parameters. These parameters are only meaningful when auto-negotiation is enabled and can be used in conjunction with the operation parameters to establish why there might be problems bringing up the link.
Current Physical Layer Status
The current physical layer status gives an indication of the state of the link, whether it's up or down, or what speed and duplex it's operating at. These parameters are derived based on the result of establishing the highest priority shared speed and duplex capability when auto-negotiation is enabled or can be pre-configured with Forced mode.
Note that the physical layer status parameters are only meaningful while ndd is running in interactive mode or the interface being viewed is already initialized by virtue of the presence of open streams such as snoop -d qfe0 or ifconfig qfe0 plumb inet up. If these streams don't exist, the device is uninitialized and the state gets set up when you probe these parameters with ndd. As a result, the parameters are subject to a race between the user viewing them and the link reaching a steady state. This makes these parameters unreliable unless an existing stream is associated with an instance prior to checking. A good rule to follow is to only trust these parameters if the interface is configured up using the ifconfig command. 10/100 eri Fast Ethernet
When the eri interface was applied to the UltraSPARC III desktop systems, it addressed many of the shortcomings of the hme interface and also eliminated the external MII interface. The detailed architecture of the eri interface is made up again of a single transmit descriptor ring and a single receive descriptor ring. However, with eri, the maximum size of the descriptor ring was increased to 8-Kbyte elements. So the opportunity to store packets for transmission is much larger and the probability of not having a descriptor element when attempting to transmit is reduced along with the need to use the streams queue behind the transmit descriptor ring. Overall, the scheduling overhead described as a problem with hme and qfe is vastly reduced with eri. The eri interface is also the first interface capable of supporting the hardware checksumming capability, allowing it to be more efficient in bulk transfer applications. The physical layer and performance features of eri are fully configurable using the driver.conf file and ndd command.
Current Device Instance in View for ndd
The current device instance in view allows you to point ndd to a particular device instance that needs configuration. This must be applied prior to altering or viewing any of the other parameters or you might not be viewing or altering the correct parameters.
Before you view or alter any of the other parameters, make a quick check of the value of instance to ensure that it is actually pointing to the device you want to view or alter. Operational Mode Parameters
The operational mode parameters adjust the MII capabilities that are used for auto-negotiation. When auto-negotiation is disabled, the highest priority value is taken as the mode of operation. See "Ethernet Physical Layer" on page 152 regarding MII.
If you are using the interactive mode of ndd with this device to alter the adv_100fdx_cap parameter to adv_10hdx_cap, the changes applied to those parameters are not actually applied to the hardware until the adv_autoneg_cap is changed to its alternative value and then back again. Transceiver Control Parameter
The eri driver is capable of having an external MII physical layer device connected, but there's no implemented hardware to allow this feature to be utilized. The use_int_xcvr parameter should never be altered in the case of eri. Inter-Packet Gap Parameters
The Inter-Packet Gap (IPG) parameters are ipg0, ipg1, and ipg2. The total IPG is the sum of ipg1 and ipg2 plus an optional ipg0 that will only be present when the lance_mode parameter is set. The total default IPG is 9.6 microseconds when the link speed set by the auto-negotiation protocol is 10 Mbit/sec. When the link speed is 100 Mbit/sec, the total IPG is 0.96 microseconds. The additional delay set by ipg0 helps to reduce collisions. Systems that have lance_mode enabled might not have enough time on the network. If lance_mode is disabled, the value of ipg0 is ignored and no additional delay is set. Only the delays set by ipg1 and ipg2 are used. Disable lance_mode if other systems keep sending a large number of back-to-back packets. You can add the additional delay by setting the ipg0 parameter, which is the nibble time delay, from 0 to 31. Note that nibble time is the time it takes to transfer four bits on the link. If the link speed is 10 Mbit/sec, nibble time is equal to 400 ns. If the link speed is 100 Mbit/sec, nibble time is equal to 40 ns. For example, if the link speed is 10 Mbit/sec and you set ipg0 to 20 nibble times, multiply 20 by 400 ns to get 800 ns. If the link speed is 100 Mbit/sec and you set ipg0 to 30 nibble times, multiply 30 by 40 ns to get 120 ns.
All of the IPG parameters can be set using ndd or can be hard-coded into the eri.conf files. Details of the methods of setting these parameters are provided in "Configuring Driver Parameters" on page 238. Receive Interrupt Blanking Parameters
The eri device introduces the receive interrupt blanking capability to 10/100 Mbit/sec ports on the UltraSPARC III desktop systems. The following table provides the parameter names, value range, and given defaults.
Local Transceiver Auto-negotiation Capability
The local transceiver auto-negotiation capability parameters are read-only parameters and represent the fixed set of capabilities associated with the current PHY that is in use.
Link Partner Capability
The link partner capability parameters are read-only parameters and represent the fixed set of capabilities associated with the attached link partner set of advertised auto-negotiation parameters. These parameters are only meaningful when auto-negotiation is enabled and can be used in conjunction with the operation parameters to establish why there might be problems bringing up the link.
Current Physical Layer Status
The current physical layer status gives an indication of the state of the link, whether it's up or down, or what speed and duplex it's operating at. These parameters are derived based on the result of establishing the highest priority shared speed and duplex capability when auto-negotiation is enabled or can be pre-configured with Forced mode.
Note that the physical layer status parameters are only meaningful while ndd is running in interactive mode or the interface being viewed is already initialized by virtue of the presence of open streams such as snoop -d eri0 or ifconfig eri0 plumb inet up. If these streams don't exist, the device is uninitialized and the state gets set up when you probe these parameters with ndd. As a result, the parameters are subject to a race between the user viewing them and the link reaching a steady state. This makes these parameters unreliable unless an existing stream is associated with an instance prior to checking. A good rule to follow is to only trust these parameters if the interface is configured up using the ifconfig command. |
< Day Day Up > |