FreeBSD boots too fast on Dell PE850

Pyun YongHyeon pyunyh at gmail.com
Fri Aug 18 09:20:40 UTC 2006


On Fri, Aug 18, 2006 at 10:51:07AM +0200, Martin Horcicka wrote:
 > 2006/8/18, Dan Nelson <dnelson at allantgroup.com>:
 > >In the last episode (Aug 17), Alan Amesbury said:
 > >> OK, booting *too* quickly is a somewhat unusual problem.....  I have
 > >> FreeBSD 6.1-RELEASE-p3 running on a Dell PowerEdge 850.  For some
 > >> reason, in the PowerEdge 850 Dell chose to replace the perfectly
 > >> adequate em(4) adapters found on the PE750 with bge(4) hardware.
 > >> FreeBSD identifies these adapters as BCM5750A1, but Dell says they're
 > >> actually Broadcom 5721J adapters instead.  See
 > >>
 > >> http://www.dell.com/downloads/global/products/pedge/en/850_specs.pdf
 > >>
 > >> for details.  The switch to which the host is connected is a Cisco
 > >> Catalyst 3750.  How this relates to FreeBSD, however.....
 > >
 > >Have you enabled portfast on the Cisco?
 > >
 > >http://www.cisco.com/warp/public/473/12.html#c2k
 > 
 > We have similar problems on various hardware and we also believe it's
 > caused by the Spanning Tree Protocol procedure done during the switch
 > port initialization. I don't like the idea of using portfast as it
 > makes the switch less robust so I tried to delay the boot using an rc
 > script as well:
 > 
 > /etc/rc.d/slow_interface_startup:
 > ---
 > #!/bin/sh
 > 
 > # PROVIDE: slow_interface_startup
 > # REQUIRE: netif
 > # BEFORE:  NETWORKING
 > 
 > slow_interface_startup_enable=${slow_interface_startup_enable:-NO}
 > slow_interface_startup_duration=${slow_interface_startup_duration:-50}
 > 
 > . /etc/rc.subr
 > 
 > name=slow_interface_startup
 > rcvar=`set_rcvar`
 > start_cmd=slow_interface_startup_start
 > stop_cmd=:
 > 
 > slow_interface_startup_start() {
 >  echo -n "Waiting for interfaces to get ready" \
 >      "($slow_interface_startup_duration seconds)"
 >  sleep "$slow_interface_startup_duration"
 >  echo
 > }
 > 
 > load_rc_config $name
 > run_rc_command "$1"
 > ---
 > 
 > Then you can add to rc.conf:
 > 
 >  slow_interface_startup_enable="YES"
 > 
 > And optionally also (in seconds):
 > 
 >  slow_interface_startup_duration="123"
 > 
 > It's a little hack but it works as expected. Anyway, in some cases it
 > does not help. The NIC is probably reset at some later point. I have
 > not investigated it further yet.
 > 
 > >Another thing to check is whether you have alias IPs.  I believe the
 > >bge driver has to reset the card every time you add or remove an IP.
 > >I know the ti driver (whose chipset the broadcom chips are based on)
 > >had that problem.
 > 
 > Yes, but I believe that all such operations are done by the netif script.
 > 

I think it's job of device driver. If the driver find its link
negotiation is in progress it should not send frames.
Unfortunately not all drivers handle this correctly.

-- 
Regards,
Pyun YongHyeon


More information about the freebsd-stable mailing list