Subject: 12.3) How do I set my hme interface to e.g. 100Mb full duplex? This applies only to Solaris 2.5 or later; hme interfaces are not supported under SunOS 4.x or earlier versions of Solaris. Sun's 10/100 network interface on the Ultra systems and on the SunSWIFT network cards are capable of negotiating with a network switch; if this is working, and if the other end is capable of 100Mb full duplex (FD) operation, the hme card will automatically set itself properly. However, this may not necessarily work with some networking gear. If the two ends have different ideas about what mode the link is, you may see "late collision" messages, dropped packets, or complete failure. First, tell the hme driver that we will be operating on hme0 (instance 0) server# ndd -set /dev/hme instance 0 Can the switch autogotiate? (0 = no, 1 = yes) server# ndd -get /dev/hme lp_autoneg_cap 1 Can the switch do 100 full duplex? (0 = no, 1 = yes) server# ndd -get /dev/hme lp_100fdx_cap 0 Can the swtich do 100 half duplex? (0 = no, 1 = yes) server# ndd -get /dev/hme lp_100hdx_cap 1 Can the switch do 10 full duplex? (0 = no, 1 = yes) server# ndd -get /dev/hme lp_10fdx_cap 0 Can the switch do 100 half duplex? (0 = no, 1 = yes) server# ndd -get /dev/hme lp_10hdx_cap 0 Can the server autonegotiate? (0 = no, 1 = yes) server# ndd -get /dev/hme autoneg_cap 1 Can the server do 100 full duplex? (0 = no, 1 = yes) server# ndd -get /dev/hme 100fdx_cap 1 Can the server do 100 half duplex? (0 = no, 1 = yes) server# ndd -get /dev/hme 100hdx_cap 1 Can the server do 10 full duplex? (0 = no, 1 = yes) server# ndd -get /dev/hme 10fdx_cap 1 Can the server do 10 half duplex? (0 = no, 1 = yes) server# ndd -get /dev/hme 10hdx_cap 1 Should the server tell the switch that it can autonegotiate? (0 = no, 1 = yes) server# ndd -get /dev/hme adv_autoneg_cap 0 Should the server tell the switch that it can do 100 full duplex? (0 = no, 1 = yes) server# ndd -get /dev/hme adv_100fdx_cap 1 Should the server tell the switch that it can do 100 half duplex? (0 = no, 1 = yes) server# ndd -get /dev/hme adv_100hdx_cap 0 Should the server tell the switch that it can do 10 full duplex? (0 = no, 1 = yes) server# ndd -get /dev/hme adv_10fdx_cap 0 Should the server tell the switch that it can do 10 half duplex? (0 = no, 1 = yes) server# ndd -get /dev/hme adv_10hdx_cap 0 What link speed is the server using? (0 = 10 Mbit, 1 = 100 Mbit) server# ndd -get /dev/hme link_speed 1 What duplex setting is the server using? (0 = half duplex, 1 = full duplex) server# ndd -get /dev/hme link_mode 1 To force a particular mode, e.g. 100Mb FD, you can use ndd as follows: # turn off autonegotiation ndd -set /dev/hme adv_autoneg_cap 0 # turn on 100Mb full-duplex capability ndd -set /dev/hme adv_100fdx_cap 1 # turn off 100Mb half-duplex capability ndd -set /dev/hme adv_100hdx_cap 0 # turn off 10Mb full-duplex capability ndd -set /dev/hme adv_10fdx_cap 0 # turn off 10Mb half-duplex capability ndd -set /dev/hme adv_10hdx_cap 0 You may have to force the other end (e.g. switch) to use the same mode. Consult the manual for your switch. NB: Fast ethernet hubs are always 100Mb half-duplex, and ethernet hubs are always 10Mb half-duplex. If you have more than one hme card in your system, before issuing the above ndd commands, you need to first select the specific hme card you want to set. For example, to select hme2, type: ndd -set /dev/hme instance 2 Subsequent ndd commands to /dev/hme will only apply to hme2. If you want to force all the hme cards on your system to a specific mode at machine boot, you can set hme driver variables in /etc/system. For example, to force all hme cards on the system to use 100Mbit FD, put the following in /etc/system: set hme:hme_adv_autoneg_cap=0 set hme:hme_adv_100fdx_cap=1 set hme:hme_adv_100hdx_cap=0 set hme:hme_adv_10hdx_cap=0 set hme:hme_adv_10fdx_cap=0 #!/bin/sh echo "forcing 100Mbps full duplex..." ndd -set /dev/hme instance 0 ndd -set /dev/hme adv_autoneg_cap 0 ndd -set /dev/hme adv_100fdx_cap 1 ndd -set /dev/hme adv_100hdx_cap 0 ndd -set /dev/hme adv_10fdx_cap 0 ndd -set /dev/hme adv_10hdx_cap 0 View the setting ndd -get /dev/hme instance ndd -get /dev/hme adv_autoneg_cap ndd -get /dev/hme adv_100fdx_cap ndd -get /dev/hme adv_100hdx_cap ndd -get /dev/hme adv_10fdx_cap ndd -get /dev/hme adv_10hdx_cap