Index: sys/dev/e1000/if_em.c =================================================================== --- sys/dev/e1000/if_em.c +++ sys/dev/e1000/if_em.c @@ -1610,20 +1610,28 @@ adapter->hw.phy.autoneg_advertised = ADVERTISE_1000_FULL; break; case IFM_100_TX: - adapter->hw.mac.autoneg = FALSE; - adapter->hw.phy.autoneg_advertised = 0; - if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) + adapter->hw.mac.autoneg = DO_AUTO_NEG; + /* XXX do we also need: hw->phy.autoneg_wait_to_complete = FALSE; */ + if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) { + adapter->hw.phy.autoneg_advertised = ADVERTISE_100_FULL; adapter->hw.mac.forced_speed_duplex = ADVERTISE_100_FULL; - else + } + else { + adapter->hw.phy.autoneg_advertised = ADVERTISE_100_HALF; adapter->hw.mac.forced_speed_duplex = ADVERTISE_100_HALF; + } break; case IFM_10_T: - adapter->hw.mac.autoneg = FALSE; - adapter->hw.phy.autoneg_advertised = 0; - if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) + adapter->hw.mac.autoneg = DO_AUTO_NEG; + /* XXX do we also need: hw->phy.autoneg_wait_to_complete = FALSE; */ + if ((ifm->ifm_media & IFM_GMASK) == IFM_FDX) { + adapter->hw.phy.autoneg_advertised = ADVERTISE_10_FULL; adapter->hw.mac.forced_speed_duplex = ADVERTISE_10_FULL; - else + } + else { + adapter->hw.phy.autoneg_advertised = ADVERTISE_10_HALF; adapter->hw.mac.forced_speed_duplex = ADVERTISE_10_HALF; + } break; default: device_printf(adapter->dev, "Unsupported media type\n");