Greg, attached is a patch designed for diagnostic purposes. Please apply to the 2.5 tree -- yes, we'll be removing this at some point in the future.
It appears that we have a problem clearing halts. This patch causes a very clear message to be printed whenever a usb_stor_clear_halt() manages to work. So far, I haven't seen such a thing happen. And I've seen _lots_ of STALL conditions. This problem has likely been around for a while... however, it hasn't been noticed before because usb-storage was difficult to use because of other bugs. Heck, the most recent 'bk pull' is the first one for me in _months_ which let me boot all the way into X11. I'm going to hold my patch queue until this is resolved. On my test setup, it's easy to see this failing. I've tried with 4 different devices, with both UHCI and EHCI drivers. I don't want to confuse this problem with other patches... 'result' in this function always seems to be -32. Which is odd, because control endpoints shouldn't do that. I'm open to suggestions as to where to look for this bug, but my instincts are telling me that this is a core or HCD issue, not a usb-storage issue. On a positive note, this means that the error-recovery system gets a good workout. Matt # This is a BitKeeper generated patch for the following project: # Project Name: greg k-h's linux 2.5 USB kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.621 -> 1.622 # drivers/usb/storage/transport.c 1.45 -> 1.46 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 02/09/29 [EMAIL PROTECTED] 1.622 # Indicate when a halt is successfully cleared. # -------------------------------------------- # diff -Nru a/drivers/usb/storage/transport.c b/drivers/usb/storage/transport.c --- a/drivers/usb/storage/transport.c Sun Sep 29 17:40:02 2002 +++ b/drivers/usb/storage/transport.c Sun Sep 29 17:40:02 2002 @@ -530,6 +530,8 @@ if (result < 0) return result; + printk(KERN_ERR "usb_stor_clear_halt() WORKED!\n"); + /* reset the toggles and endpoint flags */ usb_endpoint_running(us->pusb_dev, usb_pipeendpoint(pipe), usb_pipeout(pipe)); -- Matthew Dharm Home: [EMAIL PROTECTED] Maintainer, Linux USB Mass Storage Driver What, are you one of those Microsoft-bashing Linux freaks? -- Customer to Greg User Friendly, 2/10/1999
msg08211/pgp00000.pgp
Description: PGP signature