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 - AutoNegotiate
  • adv_100fdx_cap - 100Mb/s Full Duplex
  • adv_100hdx_cap - 100Mb/s Half Duplex
  • adv_100T4_cap - 100baseT4
  • adv_10fdx_cap - 10Mb/s Full Duplex
  • adv_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 AutoNegotiate
  • lp_100fdx_cap - Link partner is capable of 100Mb/s Full Duplex
  • lp_100hdx_cap - Link partner is capable of 100Mb/s Half Duplex
  • lp_100T4_cap - Link partner is capable of 100baseT4
  • lp_10fdx_cap - Link partner is capable of 10Mb/s Full Duplex
  • lp_10hdx_cap - Link partner is capable of 10Mb/s Half Duplex