In message: <20090201.112459.717301987....@bsdimp.com>
            "M. Warner Losh" <i...@bsdimp.com> writes:
: In message: <20090201175021.ga32...@citylink.fud.org.nz>
:             Andrew Thompson <thom...@freebsd.org> writes:
: : > 3)
: : > In general avoid more than a few synchronous USB transfer inside 
: : > attach/detach. Always defer! Else there are corner cases where the device 
can 
: : > hang waiting for the transfer timeout 1-5 seconds for every USB transfer, 
and 
: : > that is unacceptable.
: : 
: : I disagree. It hugely simplifies drivers to know all the resources are
: : allocated after attach, you dont need to check for null pointers
: : throughout the code. If programming commands fail/timeout in the attach 
routine
: : then the driver needs to check this and abort the attach. You will wait
: : one or two timeouts max.
: 
: The only way that a 'deferred attach' makes sense is if the ifnet and
: other external resources are setup as part of that deferred attach.
: That way, you don't have the NULL pointer issue.
: 
: However, doing that introduces races with devd, which are a pita to
: cope with...  Even without deferring the setting up if ifnet, you have
: races with devd if you defer things in attach that can be hard to cope
: with in the code.

Scratch that.  The race with devd is already closed since we use ifnet
events and not newbus events to configure dynamic devices.

There's still a small race on boot with deferring registration of
ifnet if you want to synchronously boot....  But I think the default
route script closes this race...

Warner
_______________________________________________
freebsd-usb@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-usb
To unsubscribe, send any mail to "freebsd-usb-unsubscr...@freebsd.org"

Reply via email to