From owner-cvs-src@FreeBSD.ORG Wed Sep 29 18:12:34 2004 Return-Path: Delivered-To: cvs-src@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 38ADA16A4CE; Wed, 29 Sep 2004 18:12:34 +0000 (GMT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 1103B43D53; Wed, 29 Sep 2004 18:12:34 +0000 (GMT) (envelope-from wpaul@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.11/8.12.11) with ESMTP id i8TICXHo087380; Wed, 29 Sep 2004 18:12:33 GMT (envelope-from wpaul@repoman.freebsd.org) Received: (from wpaul@localhost) by repoman.freebsd.org (8.12.11/8.12.11/Submit) id i8TICXQB087379; Wed, 29 Sep 2004 18:12:33 GMT (envelope-from wpaul) Message-Id: <200409291812.i8TICXQB087379@repoman.freebsd.org> From: Bill Paul Date: Wed, 29 Sep 2004 18:12:33 +0000 (UTC) To: src-committers@FreeBSD.org, cvs-src@FreeBSD.org, cvs-all@FreeBSD.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/dev/usb usb_subr.c X-BeenThere: cvs-src@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 29 Sep 2004 18:12:34 -0000 wpaul 2004-09-29 18:12:33 UTC FreeBSD src repository Modified files: sys/dev/usb usb_subr.c Log: When opening a pipe, usbd_setup_pipe() will do a usbd_clear_endpoint_stall() to make sure the pipe is ready. Some devices apparently don't support the clear stall command however. So what happens when you issue such devices a clear stall command? Typically, the command just times out. This, at least, is the behavior I've observed with two devices that I own: a Rio600 mp3 player and a T-Mobile Sidekick II. It used to be that after the timeout expired, the pipe open operation would conclude and you could still access the device, with the only negative effect being a long delay on open. But in the recent past, someone added code to make the timeout a fatal error, thereby breaking the ability to communicate with these devices in any way. I don't know exactly what the right solution is for this problem: presumeably there is some way to determine whether or not a device supports the 'clear stall' command beyond just issuing one and waiting to see if it times out, but I don't know what that is. So for now, I've added a special case to the error checking code so that the timeout is once again non-fatal, thereby letting me use my two devices again. Revision Changes Path 1.71 +8 -3 src/sys/dev/usb/usb_subr.c