How autonegotiation supposed to work

Here is a quick guide on how autonegotiation supposed to work:

When both sides are set to autonegotiation, they will negotiate the speed and the duplexity and the maximum supported will be the common speed/duplexity. If one side is hardcoded and the autonegotiation is set to off, the autonegotiation process will fail, and the side with autoneg_on will be forced to used half duplex. So if the other side is set directly to full duplex autoneg_off, then you will end up with a duplex mismatch. Here is a table to easier to memorize:

              Auto          Half        Full
Auto        optimal        works      mismatch
Half         works        optimal     mismatch
Full        mismatch      mismatch    optimal

“Optimal” means that the settings are correct, “works” means that you have luck and everything works because of the fallback-nature of autoneg, but the settings are not correct. In case of a duplex mismatch on the side running half-duplex you will see various errors and a number of late collisions. On the side running full-duplex you will see things like FCS errors. Those errors are not necessarily conclusive, they are simply indicators.  Just to mention, a hub is always half duplex, and a switch can either be half- or full duplex.

 

Example: For HP-UX:

Table 2-1 HP-UX 1000Base-T Supported Configurations

HP-UX 1000Base-T Port Link Partner Resulting Speed
   AUTO     AUTO Highest Common Speed (HP-UX supports 10/100/1000)
   AUTO 1000 FD fixed/manual 1000 Mbit/s FD (full duplex)
  10 HD     10 HD (for example, a 10Base-T Hub)     10 Mbit/s HD (half duplex)
  10 FD     10 FD     10 Mbit/s FD (full duplex)
100 HD   100 HD   100 Mbit/s HD (half duplex)
100 FD   100 FD   100 Mbit/s FD (full duplex)

 

In the table, FD means “full-duplex” and HD means “half-duplex.”

 

For AIX:

 

The default setting for AIX® is Auto_Negotiation, which negotiates the speed and duplex settings for the highest possible data rates. For the Auto_Negotiation mode to function properly, you must also configure the other endpoint (switch) for Auto_Negotiation mode.

You can configure the Ethernet adapters for the following modes:

  • 10_Half_Duplex
  • 10_Full_Duplex
  • 100_Half_Duplex
  • 100_Full_Duplex
  • Auto_Negotiation

It is important that you configure both the adapter and the other endpoint of the cable (normally an Ethernet switch or another adapter if running in a point-to-point configuration without an Ethernet switch) the same way. If one endpoint is manually set to a specific speed and duplex mode, the other endpoint should also be manually set to the same speed and duplex mode. Having one end manually set and the other in Auto_Negotiation mode normally results in problems that make the link perform slowly.

It is best to use Auto_Negotiation mode whenever possible, as it is the default setting for most Ethernet switches. However, some 10/100 Ethernet switches do not support Auto_Negotiation mode of the duplex mode. These types of switches require that you manually set both endpoints to the desired speed and duplex mode.

Note: The 10 Gigabit Ethernet adapters do not support Auto_Negotiation mode because they only work at one speed for the SR and LR fiber media.

You must use the commands that are unique to each Ethernet switch to display the port settings and change the port speed and duplex mode settings within the Ethernet switch. Refer to your switch vendors' documentation for these commands.

For AIX, you can use the smitty devices command to change the adapter settings. You can use the netstat -v command or the entstat -d en X command, where X is the Ethernet interface number to display the settings and negotiated mode. The following is part of an example of the entstat -d en3 command output:
		10/100/1000 Base-TX PCI-X Adapter (14106902) Specific Statistics:
--------------------------------------------------------------------
Link Status: Up
Media Speed Selected: Auto negotiation
Media Speed Running: 1000 Mbps Full Duplex