On one of my machines with a PCI-express Intel e1000 network controller, I get some weird behavior during startup. The driver loads, but the link lights are not lit until such time as I cycle the administrative link status. I did complain to the e1000 upstream folk about it months ago, but I still haven't seen a solution, as they seemed to bicker about it with Linus, in the name of power-saving.
The following is a snipped for /etc/conf.d/net that combines the solution with this problem with the more common check for link status check before trying to get a DHCP address.
check_link() { ethtool "${1}" | grep -q 'Link detected: yes' } preup() { # Try to force link up first, for e1000 special case i=0 while [ "${IFACE}" != "lo" ] && [ $i -lt 3 ] && ! check_link "${IFACE}"; do [ $i -gt 0 ] && sleep 1 ip link set "${IFACE}" up i=$(($i+1)) done # Then check for actual link if ! check_link "${IFACE}"; then ewarn "No link on ${IFACE}, aborting configuration" ip link set "${IFACE}" down return 1 fi }