A P P E N D I X C |
Troubleshooting |
There are many steps involved in isolating and resolving network interface problems. Once you have configured your interface and network properly, these steps should be transparent to you. However, problems in your configuration may cause a failure at any number of points along the communication path. This section contains checks to determine the failure point, and resolution process. If you continue to experience problems, information gathered from these checks will help your service provider diagnose and resolve the problem.
You might need to force hme to 10 Mb half-duplex if using 10 MB switch or a hub. The same thing holds for forcing to 100 MB Full Duplex, and all of the other speeds. Replace the "0" with "1" for the required speed.
Reboot your system to apply the changes.
The following example uses a standard 10baseT using shared Hub or 10Base2 using Mii to Aui adapter. The following instructions will change the settings for all the hme adapters on the machine. Add the following lines to the /etc/system file using a text editor:
set hme:hme_adv_autoneg_cap=0 set hme:hme_adv_100fdx_cap=0 set hme:hme_adv_100hdx_cap=0 set hme:hme_adv_10hdx_cap=1 set hme:hme_adv_10hdx_cap=0 |
For individual adapters use ndd commands as follows:
In the following example, set the X value to the interface in question
Use the following command to force to use internal Tx (100TX rj45 port)
Use the following command to force off 100 Mb half-duplex
Use the following command to force off 100Mb T-4
Use the following command to force on 100Mb full-duplex
Use the following command to force off auto-negotiation
Example: force hme0 to 100 Mb Full Duplex
This will change the settings dynamically. There is no need to reboot your system. This set of commands affects only the selected interface. By default the instance number is "0". Place these commands in the rc scripts ( Edit a file in /etc/rc2.d, for example, S95nddsettings ) to make these changes permanent and effective after a reboot .
Edit the /etc/hosts file. Change the IP address corresponding to this machine and then reboot.
Run the command sys-unconfig (1M) if you move your system to a different subnet or domain.
Caution Caution - Read the sys-unconfig(1M) man pages before using the command. Many files are permanently altered and deleted. |
Edit the following files to change the host name associated with the IP address:
Modify the files listed above from the previous question by adding the new additional hostname and IP address. In addition, add an entry needs to /etc/netmasks . The netmasks(4) man page provides the convention for this file.
Create a logical interface using the ifconfig command. For example, to configure the second interface on hme0
Use the following command for systems running Solaris 8 and later versions:
This takes effect until the next reboot. To permanently configure an additional IP address for the hme0 interface, add an additional line to /etc/hostname.hme0 . Note that for Solaris 8 or newer systems, add the following line to the /etc/hostname.hme<device_instance>:
1. Verify via the ifconfig command that the interface is configured for IP and that the adapter has the UP flag.
2. If this is ok make sure the adapter has a link:
For example if the ifconfig command returns hme0, set the instance to query. This is needed on systems with multiple adapters.
Obtain the link status of the device. A return value of 1 indicates that the adapter is seeing a link, while a return value of 0 indicates there is no link.
You cannot check ndd status until your adapter appears in the output to an ifconfig -a command. A stream must exist to the driver.
If you see packets then you know your interface is working. If your adapter is connected to a switch you will see only broadcast, multiast and unicast packets for this adapter. Verify that the switch port is configured correctly.
If you see no packets, test the adapter hardware at the ok prompt via watch-net-all or test <adapter path> .
4. If packets are seen with the snoop trace, then the network adapter is working correctly.
However, if ping still does not work, traceroute(1M) and netstat(1M) are helpful .
The traceroute commands displays the route to your destination station:
The netstat -r command displays the system routing tables:
Issue a dmesg command to display the last message that the driver sent to the console. It will state the speed of the link as well as the mode. However, often other messageshave caused the circular buffer to overflow erasing hme messages.
Use the ndd command to display and set selected configuration parameters in the hme driver. To see the parameters that are supported, type the following command:
To display the link speed, issue a ndd command to tell the driver which instance of hme that you are intested querrying. Note that instance 0 is the default. Then issue an ndd command list the link speed.
The return value of 1 for link_speed indicates that this link is running at 100Mbps. A value of 0 indicates a link speed of 10Mbps. A link_mode value of 1 indicates full duplex and a value of 0 indicates half-duplex.
Use the undocumented netstat -k command to list driver kstats. Below is an example from the output of a Solaris 8 system. Note that this option changes from release to release and is not guaranteed to work in the future.
Notice the parameter ifspeed , indicats that this link is running at 100Mbps. The link_duplex parameter indicates that thislink is running at half-duplex.
This can be detemined by inspecting the /etc/path_to_inst file for instances of hme .
The path_to_inst file records the mappings of physical device names to instance numbers. The system modifies this file when you move a board to a different slot and issue a boot -r command from the ok prompt. This information is persistent across reboots. The system remembers that your card was in another slot, so when you place it in a new slot, it creates a new device_instance, leaving the old one intact. Move the /etc/hostname.hme<device_instance> to a file name with the new device_instance number . After a reconfiguration boot, boot -r, the system will use the new device_instance number to ifconfig and plumb your adapter.
1. Inspect the file /etc/path_to_inst for hme instances.
Note the value of the highest hme instance. Also note the instance value of your adapter.
2. Follow the instructions that came with your system to replace an I/O adapter. Move the card to a new slot and issue a boot -r command.
3. Inspect the file /etc/path_to_inst for hme instances
# grep hme /etc/path_to_inst "/sbus@1f,0/SUNW,hme@e,8c00000" 0 "hme" "/sbus@1f,0/SUNW,hme@e,8c00000" 1 "hme" |
4. Move the hostname.hme<instance> file to the new highest instance.
If you have moved the adapter into an slot that previously contained an hme adapter, then this is the instance that you should move the hostname.hme<instance> file to.
This section includes common error messages you might see while configuring and bringing up your hme interface. For each message, there is a brief explanation of the problem and a possible solution.
The interface has detected Link Down while trying to transmit a packet.
Check the cable if it is connected to the interface and another host/switch.
Check the LEDs on the switch or host.
Check the ndd parameters to confirm the speed selection or auto-negotiation mode on the switch or host,
Force the interface to go into forced mode, that is, disable auto-negotiation.
Try speeds from 100 to 10 and modes from full-duplex to half-duplex.
The device failed to detach because of open streams into it. The cfgadm(DR) and modunload commands can cause this message.
Close all open streams to the driver (including any snoop(1M) to this device)
Verify that the device is not in DR-Suspended state.
Issue the command, ifconfig hme<instance> down unplumb before issuing the modunload command to remove the driver
While attempting to auto-negotiate with a link partner, the interface encountered a parallel detection fault. The device will retry auto-negotion until the link is up.
Check and replace the cable to the Switch or other host
Try different port on the switch or a different switch or host.
Set the device into force mode using ndd .
Replace the adapter hardware.
The transceiver on the adapter fails to reset. The device will retry resetting the transceiver.
The device did not detect the external/internal transceiver. This often occurs when the external transceiver is not properly connected or is not functioning properly.
Check if the External transceiver is present. Verify that it is inserted or connected properly.
Replace the external transceiver with a known good(working) transciever.
Replace the adapter hardware.
The adapter is in a Slave-Only-Slot. The device failed to attach.
Check the system I/O slots diagram.
Identify Slave-only-slots and move the adapter to a non-Slave-Only-Slot.
The device failrf to intialise/setup/allocate resources needed to function properly.
Check the system resources using vmstat(1M) .
Reboot the system or DR the device to free up resources
Replace the adapter hardware.
Either the link partner's auto-negotiation capability cannot be read, or the switch or other host is not advertising its auto-negotiation capabilities. This often occurs when an external transceiver attached to the device.
Set the mode to half duplex and try the speed from 100 to 10 using the parallel detection scheme. This message indicates that the above configuration failed to set the speed.
Verify that the external transceiver is attached.Verify the speed selection bits.
Verify the switch or other host setup.
Replace the external transceiver with a known working transciever.
Copyright © 2002, Sun Microsystems, Inc. All rights reserved.