Solaris is often unable to correctly auto-negotiate duplex settings with a link partner (e.g. switch), especially when the switch is set to 100Mbit full-duplex. You can force the NIC into 100Mbit full-duplex by disabling auto-negotiation and 100Mbit half-duplex capability.
Example with e1000g0:
1. Make the changes to the running system.
# ndd -set /dev/e1000g0 adv_100hdx_cap 0
# ndd -set /dev/e1000g0 adv_100fdx_cap 1
# ndd -set /dev/e1000g0 adv_autoneg_cap 0
2. Make kernel parameter changes to preserve the speed and duplex settings after a reboot.
# vi /etc/system
Add:
# set hme:e1000g0_adv_autoneg_cap=0
# set hme:e1000g0_adv_100hdx_cap=0
# set hme:e1000g0_adv_100fdx_cap=1