Forcing Full Duplex on Solaris

From Peter Pap's Technowiki
Jump to: navigation, search

By default, Solaris likes to autonegotiate. This is in my experience usually the best option. When you are building a machine using Jumpstart, it is the only option, as when you net boot a Solaris server it will autonegotiate. Therefore, if you have it connected to a switch that is forcing full duplex, you're basically up a nasty smelling creek without a paddle.

In some instances, it is necessary to force full duplex on a Solaris box. In those instances, you have two options, use the ndd command or edit the appropriate system file for your interface to ake the change permanent.


The ndd command

The 'ndd' command allows you to change the properties of a network interface in situ. However, it is a dangerous command, as it will likely cause your interface to 'restart', for want of a better term. As such, the machine can drop off the network momentarily and therefore, should only be performed from the console. However, 'ndd' is very useful and can be used to do some of the following:

  • List All Interface Properties
  •   ndd -get /dev/bge0 \?
    
  • Force Full Duplex
  •   ndd -set /dev/bge0 adv_100hdx_cap 0
      ndd -set /dev/bge0 adv_100fdx_cap 1
      ndd -set /dev/bge0 adv_autoneg_cap 0
    
  • Set Autonegotiate
  •   ndd -set /dev/bge0 adv_autoneg_cap 1