On Sun, 7 Sep 2003, Tomita, Haruo wrote:

> I am also looking at this pattern repeatedly.
> It seems that a device does not answer in the case of kernel 2.4.
> However, when operating by kernel 2.6 and two or more devices
> are connected simultaneously, it operates. 
> I cannot think the error of a device.

Don't be too sure.  It could be that 2.4 and 2.6 are sending different 
data to the device, but for both systems the data is correct and the 
device _should_ work correctly.  Maybe it's a device error that causes it 
to work okay with the data from 2.6 but not the data from 2.4.

> Alan> This time the bus_reset() routine worked, which is an 
> Alan> improvement over 
> Alan> what you were seeing before.  But the device still didn't respond:
> 
> If a device becomes an error, it seems that reset is not effective.
> Using ioctl (fd, USBDEVFS_RESET, 0) and this device,  
> Is checking whether a device can reset correctly by 
> performing effective?

Go ahead and try it.  I expect it will reset correctly when you test it 
like this, but it won't reset correctly after one of those errors occurs 
and the device stops responding.  That's just a guess.

> Alan> Once that happened there were no error recovery procedures 
> Alan> left to try, so 
> Alan> the driver gave up and marked the device offline.
> 
> Doesn't a device receive any commands?

The system sent commands, but the device didn't respond to them.  However, 
it's possible that this patch will help.  Try it out and see what happens.

--- 2.4.22/drivers/usb/storage/protocol.c.orig  Mon Aug 25 07:44:42 2003
+++ 2.4.22/drivers/usb/storage/protocol.c       Fri Sep  5 16:20:26 2003
@@ -237,6 +237,10 @@
         * a unsigned char cmnd[12], so we know we have storage available
         */
 
+       /* Pad the ATAPI command with zeros */
+       for (; srb->cmd_len<12; srb->cmd_len++)
+               srb->cmnd[srb->cmd_len] = 0;
+
        /* set command length to 12 bytes (this affects the transport layer) */
        srb->cmd_len = 12;
 
> > > 2.  usb_stor_bulk_msg() returned -32
>  
> Alan> Under what circumstances did this error occur?  It must have 
> Alan> been quite different from the other error.
> 
> The used device(Logitec LCW-WIN40U2) is different. 
> It is the same circumstances except a device.

But when the error occurred, had you just plugged in the drive?  Or had it 
been running already for some time?  What were you doing when the error 
occurred?  Was there some reason that the drive returned an error code 
meaning it had just been reset?

> If a SCSI driver performs retry, 
> is it that usb-storage can also restart processing?

usb-storage doesn't do its own retries.  Only the SCSI driver does.  But
when the SCSI driver retries a command, it sends a new copy of the command
to usb-storage, so usb-storage sends the new copy of the command to the 
device.

Alan Stern



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to