Auto-negotiation

About this task

See Auto-negotiation for a general discussion on network negotiations.

On Solaris, you can check a gigabit (GE), Quad-Fast Ethernet (QFE) and Fast-Ethernet (HME) links with the following process:

   #ifconfig -a 
   lo0: flags=1000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4> mtu 8232 index 1
           inet 127.0.0.1 netmask ff000000
   hme0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
           inet 10.10.10.10 netmask ffffff00 broadcast 10.10.10.255
   

In the example above, the server has a single HME interface. To query the HME settings, issue the following commands:

   # ndd -get /dev/hme link_speed
   1
   # ndd -get /dev/hme link_mode
   1

For QFE or GE, substitute in /dev/qfe or /dev/ge respectively.

The results of the commands above are as follows:

Table 1. NDD results
NDD Variable Results
link_speed 0 = 10mps

1 = 100mps

link_mode 0 = half-duplex

1 = full-duplex

If the auto-negotiation failed, you can manually set the NIC by issuing the following commands:

   # ndd -set /dev/hme instance 0
   # ndd -set /dev/hme adv_100T4_cap 0        disables T4 cabling
   # ndd -set /dev/hme adv_100fdx_cap 1    enables 100mps full duplex
   # ndd -set /dev/hme adv_100hdx_cap 0    disables 100mps half duplex
   # ndd -set /dev/hme adv_10fdx_cap 0     disables 10mps full duplex
   # ndd -set /dev/hme adv_10hdx_cap 0     disables 10mps half duplex
   # ndd -set /dev/hme adv_autoneg_cap 0   disables autonegotiation

You can preserve the commands above across reboot by adding the following commands to /etc/system:

   set hme:hme_adv_autoneg_cap=0
   set hme:hme_adv_100T4_cap=0
   set hme:hme_adv_100fdx_cap=1
   set hme:hme_adv_100hdx_cap=0
   set hme:hme_adv_10fdx_cap=0
   set hme:hme_adv_10hdx_cap=0

You also need to manually set the switch ports to 100mps full-duplex. Please see your switch documentation.