Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 01 Feb 2009 11:24:59 -0700 (MST)
From:      "M. Warner Losh" <imp@bsdimp.com>
To:        thompsa@freebsd.org
Cc:        freebsd-usb@freebsd.org
Subject:   Re: USB2 patches
Message-ID:  <20090201.112459.717301987.imp@bsdimp.com>
In-Reply-To: <20090201175021.GA32503@citylink.fud.org.nz>
References:  <20090201030628.GE65558@elvis.mu.org> <200902011220.18745.hselasky@c2i.net> <20090201175021.GA32503@citylink.fud.org.nz>

next in thread | previous in thread | raw e-mail | index | archive | help
In message: <20090201175021.GA32503@citylink.fud.org.nz>
            Andrew Thompson <thompsa@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.

Warner



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090201.112459.717301987.imp>