In message: <[email protected]> "M. Warner Losh" <[email protected]> writes: : In message: <[email protected]> : Andrew Thompson <[email protected]> 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 _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-usb To unsubscribe, send any mail to "[email protected]"
