From owner-freebsd-usb@FreeBSD.ORG Sun Feb 1 18:27:21 2009 Return-Path: Delivered-To: freebsd-usb@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 63838106566C; Sun, 1 Feb 2009 18:27:21 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from harmony.bsdimp.com (bsdimp.com [199.45.160.85]) by mx1.freebsd.org (Postfix) with ESMTP id 2384E8FC08; Sun, 1 Feb 2009 18:27:21 +0000 (UTC) (envelope-from imp@bsdimp.com) Received: from localhost (localhost [127.0.0.1]) by harmony.bsdimp.com (8.14.2/8.14.1) with ESMTP id n11IOUIa093351; Sun, 1 Feb 2009 11:24:30 -0700 (MST) (envelope-from imp@bsdimp.com) Date: Sun, 01 Feb 2009 11:24:59 -0700 (MST) Message-Id: <20090201.112459.717301987.imp@bsdimp.com> To: thompsa@freebsd.org From: "M. Warner Losh" 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> X-Mailer: Mew version 5.2 on Emacs 21.3 / Mule 5.0 (SAKAKI) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Cc: freebsd-usb@freebsd.org Subject: Re: USB2 patches X-BeenThere: freebsd-usb@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: FreeBSD support for USB List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 01 Feb 2009 18:27:21 -0000 In message: <20090201175021.GA32503@citylink.fud.org.nz> Andrew Thompson 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