Auto Negotiation of Speed and Duplex Failing on Solaris 10 bge interface

A Gigabit capable port on some Solaris 10 systems made by Broadcom has difficulty negotiating speed and duplex settings with Cisco network switches. To resolve the situation, the bge interface in question was manually set to 100BaseT Full Duplex as follows.

Modified /platform/sun4u/kernel/drv/bge.conf by adding the lines:

adv_autoneg_cap = 0;
adv_1000fdx_cap = 0;
adv_1000hdx_cap = 0;
adv_100T4_cap = 0;
adv_100fdx_cap = 1;
adv_100hdx_cap = 0;
adv_10fdx_cap = 0;
adv_10hdx_cap = 0;

A reboot will be required to re-read these settings to make it 100BaseT Full Duplex by default instead of autonegotiating the Half Duplex that was causing the backups to be so slow. This will change all bge interfaces on the system to be 100BaseT Full duplex

If you are not able to reboot, the following can be done to change the settings on the fly:

# ndd -set /dev/bge instance 0 /* Select /dev/bge0 */
# ndd -set /dev/bge adv_1000fdx_cap=0
# ndd -set /dev/bge adv_1000hdx_cap=0
# ndd –set /dev/bge adv_100fdx_cap=1
# ndd –set /dev/bge adv_100hdx_cap=0
# ndd –set /dev/bge adv_100T4_cap=0
# ndd -set /dev/bge adv_10fdx_cap=0
# ndd -set /dev/bge adv_10hdx_cap=0
# ndd –set /dev/bge adv_autoneg_cap=0

This method will set only this instance of /dev/bge0 and will not change any other bge network interface.

You can also use the ndd command to read the settings

# ndd -set /dev/bge instance 0

# ndd -get /dev/bge link_duplex

0 = half-duplex
1 = full-duplex

# ndd -get /dev/bge link_speed

0 = 10 Mbit
1 = 100 Mbit
1000 = 1 Gbit

# ndd -get /dev/bge link_status

0 = off
1 = on

– See more at: http://serviceitdirect.com/blog/auto-negotiation-speed-and-duplex-failing-solaris-10-bge-interface#sthash.zM4AGpaQ.dpuf


Tags: ,