hme Interface 100BaseT and Full Duplex Setup

Method A) Using ndd
Method B) Modifying /etc/system

  1. Check with the following commmands:
        # ndd -get /dev/hme link_status 
        # ndd -get /dev/hme link_speed 
        # ndd -get /dev/hme link_mode
    
        link_status (read only)
             0 for Link Down
             1 for Link up
    
        link_speed (read only)
             0 for 10 Mbps
             1 for 100 Mbps
    
        link_mode (read only)
             0 for Half-Duplex mode
             1 for Full-Duplex mode 
    	
  2. Using ndd
                1.1. hme interface = 10MB full duplex
    
                     # ndd -set /dev/hme adv_100T4_cap 0
                     # ndd -set /dev/hme adv_100fdx_cap 0
                     # ndd -set /dev/hme adv_100hdx_cap 0
                     # ndd -set /dev/hme adv_10fdx_cap 1
                     # ndd -set /dev/hme adv_10hdx_cap 0
                     # ndd -set /dev/hme adv_autoneg_cap 0
    
                1.2. hme interface = 10MB half duplex
    
                    # ndd -set /dev/hme adv_100T4_cap 0
                    # ndd -set /dev/hme adv_100fdx_cap 0
                    # ndd -set /dev/hme adv_100hdx_cap 0
                    # ndd -set /dev/hme adv_10fdx_cap 0
                    # ndd -set /dev/hme adv_10hdx_cap 1
                    # ndd -set /dev/hme adv_autoneg_cap 0
    
                1.3. hme interface = 100MB full duplex
    
                    # ndd -set /dev/hme adv_100T4_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
                    # ndd -set /dev/hme adv_autoneg_cap 0
    
                1.4. hme interface = 100MB half duplex
    
                    # ndd -set /dev/hme adv_100T4_cap 0
                    # ndd -set /dev/hme adv_100fdx_cap 0
                    # ndd -set /dev/hme adv_100hdx_cap 1
                    # ndd -set /dev/hme adv_10fdx_cap 0
                    # ndd -set /dev/hme adv_10hdx_cap 0
                    # ndd -set /dev/hme adv_autoneg_cap 0
    	
  3. Modifying /etc/system
                
                2.1 hme interface = 10MB full duplex
    
                    set hme:hme_adv_autoneg_cap=0
                    set hme:hme_adv_100T4_cap=0
                    set hme:hme_adv_100fdx_cap=0
                    set hme:hme_adv_100hdx_cap=0
                    set hme:hme_adv_10fdx_cap=1
                    set hme:hme_adv_10hdx_cap=0
    
               2.2 hme interface = 10MB half duplex
    
                    set hme:hme_adv_autoneg_cap=0
                    set hme:hme_adv_100T4_cap=0
                    set hme:hme_adv_100fdx_cap=0
                    set hme:hme_adv_100hdx_cap=0
                    set hme:hme_adv_10fdx_cap=0
                    set hme:hme_adv_10hdx_cap=1
    
                2.3 hme interface = 100MB full duplex
    
                    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
    
               2.4 hme interface = 100MB half duplex
    
                    set hme:hme_adv_autoneg_cap=0
                    set hme:hme_adv_100T4_cap=0
                    set hme:hme_adv_100fdx_cap=0
                    set hme:hme_adv_100hdx_cap=1
                    set hme:hme_adv_10fdx_cap=0
                    set hme:hme_adv_10hdx_cap=0
    	
  4. As for 2 or more hme cards, instance should be set up independently.
                    # ndd -set /dev/hme instance 0
                      parameters for hme0
    
                    # ndd -set /dev/hme instance 1
                      parameters for hme1
    	
  5. /etc/init.d/inetinit or /etc/rc2.d/S69inet
    	# Set configurable parameters
    	ndd -set /dev/tcp tcp_old_urp_interpretation 1
    	# Set full duplex hme0
    	ndd -set /dev/hme instance 0
    	ndd -set /dev/hme adv_100fdx_cap 1
    	ndd -set /dev/hme adv_autoneg_cap 0
    	# Set Max TCP buffer
    	ndd -set /dev/tcp tcp_xmit_hiwat 65535
    	ndd -set /dev/tcp tcp_recv_hiwat 65535
    	ndd -set /dev/tcp tcp_cwnd_max 65535
    	#
    	
  6. To set /dev/hme to full duplex:
    	#! /bin/sh
    	# Set /dev/hme to full duplex
    	
    	ndd /dev/hme link_status > /dev/null 2>&1
    	status=$?
    	if [ $status -eq 0 ]; then
    		echo "Setting hme to full duplex"
    		ndd -set /dev/hme adv_autoneg_cap 0
    		ndd -set /dev/hme adv_100hdx_cap 0
    		ndd -set /dev/hme adv_100fdx_cap 1
    		#ndd -set /dev/hme adv_autoneg_cap 1
    		link_mode=`ndd /dev/hme link_mode`
    		#if [ "$link_mode" -eq "0" ]; then
    		#		echo "Error, link_mode == $link_mode, should equal 1"
    		#fi
    	else
    		echo "No hme, so no full duplex"
    	fi
    	
  7. To set all hme to Full Duplex.
    	#!/bin/ksh
    	NDD="/usr/sbin/ndd -set /dev/hme"
    	TRUE=1
    	FALSE=0
    	autoneg=0
    	speed=100
    	#
    	print "Setting the Ethernet-Adapters to 100MB/s Full/Duplex"
    	
    	for instance in 1 2 3
    	do
    		echo "Setting card # $instance to $speed Mb/S Full Duplex"
    		# Only use internal Xcever
    		$NDD instance $instance
    		$NDD use_int_xcvr $TRUE
    		$NDD adv_100T4_cap $FALSE
    		sleep 2
    		$NDD adv_100fdx_cap $TRUE
    		sleep 2
    		$NDD adv_100hdx_cap $FALSE
    		sleep 2
    		$NDD adv_10fdx_cap $FALSE
    		sleep 2
    		$NDD adv_10hdx_cap $FALSE
    		sleep 2
    		$NDD adv_autoneg_cap $autoneg
    	done
    	echo "all Adapters done...\n"
    	exit
    	

Copyright© 1995-2000 Daniel SW Kim. All Rights Reserved