On Fri, 2 Jun 2006, Vivek Dharmadhikari wrote:

> Alan
> 
> >The problem is more likely to be in your device than in the kernel. 
> 
> You are proabably right here. I used Catalyst USB analyzer to cross
> check the results of usbmon log. USB analyzer indicated many hot spots
> of 30 seconds and 6 seconds which are in aggrement with usbmon log.
> 
> >The 30-second jump occurs because the device has crashed and isn't sending 
> >any response.  The kernel waits for 30 seconds before aborting the 
> >command.  The 6-second jump is probably part of the device-reset sequence.
> 
> However the 30 seconds delay was not due to device crash but rather due
> to NYET handshake packet from device. The 6 second jump occurs after
> Class type request. The sequence on the bus is like below int the order
> given below
> 
> Host send OUT transcation with 31 Bytes
> Device reponds with NYET.
> 30 seconds IDLE time on bus.
> Host send Class type request and device ack it.
> 6 seconds IDLE time on bus.
> Host send Clear endpoint feature request for in endpoint and device responds 
> it.
> Host send Clear endpoint feature request for out endpoint and device responds 
> it.
> 10 seconds IDLE time on bus.
> 
> The above sequence gets repeated few times during the copy operation to
> USB hard disk and copy operation take long time to finish.

Aha!  It's a good thing you had the Catalyst.  This does look like a bug
in the host controller driver, or maybe an erratum in the controller
itself.

> I used USB 2.0 hard disk from Iomega,acomdata and 2.0 flash driver from
> Sandisk for the experiments and i saw similar patterns with each one of
> them.
> 
> I am curious to know condition under which the host will observe silence
> for 30 seconds. I ask because the analyzer shows that many a
> times,device responded with NYET and host then initiated PING
> transactions immediately(after few milliseonds) after NYET which is ok.

I am curious also.  It should never happen.

> Similarly why the host obeserve silence for 6 seconds after sending
> class type request ?

The usb-storage driver pauses for 6 seconds to give the device time to 
settle after being reset.

> I don't think the hard disks are bad because they works fine with Windows.

I agree.  The problem is in the host.

> I also repeated the above experiments by attaching the hard disks to 1.0
> hub,there by forcing the hard disks to operate at full speed.I did not
> see idle time greater than 1 seconds and copy operation finished much
> earlier than the devices operating at high speed !. I am baffled by this
> fact. Do you any theory here ?

A bug in the driver or an error in the controller hardware.  You said
earlier that you ported the 2.6.12 driver to a MIPS SOC machine.  Maybe
your port has a bug or maybe the Synopsys USB 2.0 controller has an
erratum.

If there is a bug in the driver, perhaps it has already been fixed in
later versions of the kernel.

Alan Stern



_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to