On Wed, Mar 01, 2006 at 04:56:51PM -0800, Pete Zaitcev wrote:
> On Wed, 1 Mar 2006 16:27:56 -0800, Marc Singer <[EMAIL PROTECTED]> wrote:
> 
> >  0:15.261198 # 10 S Ci 009:00 s 80 00 0000 0000 0002 ( DtH st dv GET_STATUS 
> > ) --- 2 <
> >  0:15.261201 # 11 S Ci 009:00 s 80 06 0600 0000 000a ( DtH st dv 
> > GET_DESCRIPTOR [DEVICE_QUALIFIER 0] ) --- 10 <
> >  ...
> >  0:15.261981 # 10 C Ci 009:00 --- 0 2 = 0100
> >  0:15.261982 # 10 S Ci 009:00 s 80 00 0000 0000 0002 ( DtH st dv GET_STATUS 
> > ) --- 2 <
> >  0:15.261988 # 11 C Ci 009:00 --- -32 0  
> > 
> > I interpret this to mean that the device is asking the host for the
> > device status and then a DEVICE_QUALIFIER descriptor.  It returns
> > 0x0100.  The device turns around and asks for it again.  The host then
> > returns an error, -EPIPE, for that URB.  Am I understanding this flow
> > correctly?
> 
> Device cannot ask host anything in USB. It just sits there quietly and
> waits to be polled. Always.

Right.  So the host is asking the device for the DEVICE status and
then for the DEVICE_QUALIFIER descriptor.  The device sends the status
indicating that it's self-powered.  Its response to #11 is what is
broken.  It may be getting confused by the second status request *or*
it may have sent the STALL (is that the -32?) before it received the
second GET_STATUS.

> So, in the above exchange, host performs two control transfers.
> The log seems to be post-processed by some tool, which dropped interesting
> information such as URB tag.

The URB tag is recoded as a number prefixed with #.  It makes it
easier to correlate the messages.  Do the URB tags have implicit
information in them?

 The numbers on the left may be manufactured
> from the tag. If so, it appears that the host
>  - submits GET_STATUS
>  - submits GET_DESCRIPTOR
>  - receives status
>  - submits another GET_STATUS
>  - receives a stall for GET_DESCRIPTOR
> 
> So, the control transfers are queued. Are you sure that it's a sane
> thing to do?

So, where exactly is the STALL in the above exchange?  I suspect that
the UDC driver has lost its state and is sending a STALL because it
doesn't know what it is doing.

Here is the raw data.  I don't believe that the annotated version
dropped anything important and it's easier for a human like me to
read.

  e2372540 1594541797 S Ci:009:00 s 80 00 0000 0000 0002 2 <
  e23725c0 1594541800 S Ci:009:00 s 80 06 0600 0000 000a 10 <
  ...
  e2372540 1594542580 C Ci:009:00 0 2 = 0100
  e2372540 1594542581 S Ci:009:00 s 80 00 0000 0000 0002 2 <
  e23725c0 1594542587 C Ci:009:00 -32 0


-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
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