Monday, November 27, 2006

How to Set 100Full Duplex on an HME device

How to Set 100Full Duplex on an HME device.

 

The following may prove useful in support of this:

=====
How to force the HME card to work at 100mb (full-duplex).

If the auto negotiate does not work, then the 100-MB full-duplex mode
can be forced to run at 100-MB, Full-Duplex using the following:

Please try (if using /etc/rc2.d/S99...)

ndd -set /dev/hme instance 0
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

or (if using /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

Note that the order does make a difference.
The link is re-negotiated when the interface is
ifconfig'ed up or when ndd ndd adv_autoneg_cap command is executed.

======

How to force the HME card to work at 10mb (full-duplex).

The section "10FDX" includes how to force the HME card to work at 10 MB
(full-duplex). You can either put the commands in the /etc/system file
or in a startup script -- i.e. /etc/rc2.d/S99hme_config. Another way
is to make the changes from the command line -- using the "ndd" command using
the syntax below. But it is better to put the commands in /etc/system or a
startup script to preserve the environment accross reboots.

10FDX only

/etc/system

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

ndd commands

ndd -set /dev/hme instance 0
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

=======
Is the hme interface running at 10BaseT or 100BaseT

How do you tell if the hme interface is actually linked up at 10 Mbps or 100
Mbps?

Answer:

# 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 comments:

HuggyPuggy said...

How to add a NIC card on Sun:

ifconfig hmeX plumb
ifconfig hmeX inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx
ifconfig hmeX up

How to change a hostname on Sun:

Make sure to use notepad or vi to edit files in order to avoid hidden characters.

There are four files that must be modified in order to rename the hostname:

1) /etc/hosts
2) /etc/net/ticlts/hosts
3) /etc/net/ticolts/hosts
4) /etc/nodename
5) /etc/hostname.hmex
6) /etc/net/ticotsord/hosts

Another way to change the hostname is by using sys-unconfig command. This restores the system to an unconfigured
state and should only be used when you are not concerned about preserving the current setup of the system. I suggest
looking at the man pages for further information (man sys-unconfig) or edit the following files above.

Note: rename the directory under /var/crash to match your new hostname.

Sun Solaris Servers Network Configuration Guide (SPARC Platform Only)


To bind an IP address to a Network Interface Card
#ifconfig -a
--- to check the configuration
#ifconfig qfe0 plumb
--- to enable the first Network Interface Card
#ifconfig qfe0 {ip address}
netmask {subnet} up
--- to bind IP address, subnet, and enable the configuration

Create a file on /etc directory - hostname.qfe0 with hostname entry
Add entry on /etc/netmasks if IP address is on different subnet
Add entry on /etc/inet/hosts file with IP address and hostname

Example:
#ifconfig -a
hme0: flags=863UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST mtu 1500
inet 202.40.231.2 netmask ffffff00 broadcast 202.40.231.255
ether 8:0:20:9f:51:fe

#ifconfig qfe0 plumb
#ifconfig qfe0 202.40.231.3 netmask 255.255.255.0 up
#ifconfig -a

hme0: flags=863 UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST mtu 1500
inet 202.40.231.2 netmask ffffff00 broadcast 202.40.231.255
ether 8:0:20:9f:51:fe
qfe0: flags=863UP,BROADCAST,NOTRAILERS,RUNNING,MULTICAST mtu 1500
inet 202.40.231.3 netmask ffffff00 broadcast 202.40.231.255

To change IP Address
#ifconfig qfe0 down
--- to disable the first Network Interface Card

To remove Network Interface Card
#ifconfig qfe0 unplumb
--- to remove the first Network Interface Card

To bind a virtual IP address to Network Interface Card
#ifconfig qfe0:1 plumb
--- in some cases this is not needed if qfe0 has been plumb
#ifconfig qfe0:1 202.40.231.4 netmask 255.255.255.0 up

Create a file on /etc directory - hostname.qfe0:1 with hostname entry
Add entry on /etc/netmasks if IP address is on different subnet
Add entry on /etc/inet/hosts file with IP address and hostname

NOTE:
-If adding a quad

Network Interface Card, the naming convention will be qfe0, qfe1, qfe2, qfe3.
-If adding a single port Network Interface Card, the naming convention will be hme1, hme2, hme3.
-The onboard Network Interface Card is hme0
-If adding a virtual IP address, the naming convention will be hme0:1, hme0:2, up to hme0:3 only for hme0,
or qfe0:1, qfe0:2, up to qfe0:3 only for qfe0, depending on the number of hme and qfe port used.


To hardcode the speed of the Network Interface Card
Example:
You want to hardcode 100Full Duplex for hme0
#ndd -set /dev/hme instance 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

Create an input on the file /etc/system so that when your system rebooted it will run the NIC in 100Full Duplex
automatically.
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
set hme:hme_adv_autoneg_cap=0

To check the status
#ndd /dev/hme \?
--- displays all command options for ndd
#ndd /dev/hme link_status
--- displays the hme0 link status

The above configurations should be followed in order.

1 = Capable/Enable
0 = Disable
hme1 = instance 1
hme2 = instance 2
hme3 = instance 3

The system on the other end of network cable should be hardcode to 100Full Duplex also. If the other end is a
switch, check your vendor manuals on how to do it.

To monitor packets traveling in your NIC ports
Example:
You want to monitor your hme0 port of packets coming from IP address 202.40.224.14
#snoop -d hme0 | grep 202.40.224.14

You want to monitor your qfe1 port of packets coming from host server1
#snoop -d qfe1 | grep server1

You want to monitor your hme1 ports of all packets
#snoop -d hme1

To add or remove a static route
Example:
You want to add a static route to network 192.168.16.0 to your default gateway of 10.236.74.1
#route add -net 192.168.16.0 10.236.74.1

then create a script, so that when the system rebooted the route will automatically added
#cd /etc/rc2.d
#vi S168staticroute

Add the following line
route add -net 192.168.16.0 10.236.74.1

You want to add a static route to host 192.168.64.4 to your default gateway of 10.236.74.1
#route add 192.168.64.4 10.236.74.1

then create a script, so that when the system rebooted the route will automatically added
#cd /etc/rc2.d
#vi S168staticroute

Add the following line
route add 192.168.64.4 10.236.74.1

You want to delete the static route to network 192.168.16.0 to your default gateway of 10.236.74.1
#route delete -net 192.168.16.0 10.236.74.1

You want to delete the static route to host 192.168.64.4 to your default gateway of 10.236.74.1
#route delete 192.168.64.4 10.236.74.1

I just want to contribute a little bit.

rags6 said...

Nice Blog, keep visiting for such useful tips. Thank you so much!
http://www.techtipsntricks.com/