SUNW,hme network properties
My trusty Ultra-10 has one of the most commonly used network cards (SUNW,hme
) for this model of system. The card, internally at SMI known as a happy meal
card, after its device driver /dev/hme
, has many options which can be both queried and set. These options affect the fundamental functions of the card, such as it's duplex and line speed settings.
Recently I have had to make a couple of parameter changes for this card due to some networker changes here in Watchmoor park, so I'll share with you some of the most common options available to an administrator encounters.
What settings are the NIC currently using?
To find the link status of the card, use the following command:
# /usr/sbin/ndd -get /dev/hme link_status
A value of 0
indicates the link is down, while a value of 1
indicates the link is up.
To find the speed and duplex of the card's link, use the folllowing two commands:
# /usr/sbin/ndd -get /dev/hme link_speed # /usr/sbin/ndd -get /dev/hme link_mode
A value of 0
for link_speed indicates 10Mb/s, while a value of 1
indicates 100Mb/s operation. A value of 0
for link_mode indicates half-duplex, while a value of 1
indicates full-duplex operation.
To find whether the card is using its onboard transceiver or its MII interface, use the following:
# /usr/sbin/ndd -get /dev/hme transciever_inuse
A value of 0
indicates the onboard transceiver, while a 1
indicates the MII interface is being used.
A most valuable parameter is to set the instance of the network card you are querying. This is only necessary if there are multiple instances of the hme card on the system. Instance numbers start at 0
and increment. For example, hme0
would be instance 0
and hme1
would be instance 1
.
# /usr/sbin/ndd -set /dev/hme instance 0
Configuring NIC Capabilities
A common issue with the SUNW,hme card is the autonegotiate
method of determining link speed and mode does not work between different manufacturer's equipment, making it necessary to force the proper mode on the network card (and on the remote end of the link).
There are several modes which the card is capable of using. The mode names as identified by the ndd command are as follows:
adv_autoneg_cap
- AutoNegotiateadv_100fdx_cap
- 100Mb/s Full Duplexadv_100hdx_cap
- 100Mb/s Half Duplexadv_100T4_cap
- 100baseT4adv_10fdx_cap
- 10Mb/s Full Duplexadv_10hdx_cap
- 10Mb/s Half Duplex
For each of these capabilities, a state of 0 indicates an 'off' state, while 1 indicates an 'on' state. When configuring the card's capabilties it is a good idea to set the correct capability to 'on' first, followed by each of the unused modes to 'off'. The adv_autoneg_cap
should always be turned off last, as the card will renegotiate its link with its partner at this time.
Configuring Link Partner Capabilities
Configuring the capabilties of the link partner is similar to configuring the actual NIC's capabilties. Once again, a setting of 0 indicates 'off', while a setting of 1 indicates 'on'.
lp_autoneg_cap
- Link partner is capable of AutoNegotiatelp_100fdx_cap
- Link partner is capable of 100Mb/s Full Duplexlp_100hdx_cap
- Link partner is capable of 100Mb/s Half Duplexlp_100T4_cap
- Link partner is capable of 100baseT4lp_10fdx_cap
- Link partner is capable of 10Mb/s Full Duplexlp_10hdx_cap
- Link partner is capable of 10Mb/s Half Duplex