Re: Mass Storage Gadget Device Falls from SuperSpeed to High Speed

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi again,

Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx> writes:
>>> Sure, that would be great. How can I download it? Any link which I can
>>> curl? You can send it to me only, if you want; no problem.
>>
>> You (and anyone reading) can download it here:
>> https://drive.google.com/file/d/1WSJ-222bguXTsRZ-mI5u2M7IP9FsZdj7/view?usp=sharing
>
> I'll download it and have a look, thanks

Alright, the LeCroy traces made everything a lot more clear. So here's
what happens. A few assumptions first:

R is the right port where the Host is connected
L is the left port where the device is connected


We can start from LeCroy timestamp 61.271965376, that correlates with
DWC3 tracepoint 1422.092840, iow:

     irq/23-dwc3-995   [000] d..1  1422.092840: dwc3_event: event (00120301): Link Change [U2]

From there, we see a change to Recovery.Active in timestamp
61.272120896. We don't see a link state change interrupt for this, so
it's not reported here. We can see on LeCroy traces that host sends
372025 TS1 data packets for 12ms. From USB specification section
7.5.10.3.1 we read that once entering Recovery.Active a 12ms timer is
started and (now on section 7.5.10.3.2) port should transition to
SS.Inactive when this timer expires. Hence:

     irq/23-dwc3-995   [000] d..1  1427.800204: dwc3_event: event (00160301): Link Change [SS.Inactive]

From that point, on LeCroy timestamp 61.284317360, we see a transition
to Rx.Detect which matches with:

     irq/23-dwc3-995   [000] d..1  1427.813205: dwc3_event: event (00150301): Link Change [RX.Detect]

From RX.Detect we see a series of transitions between Polling.LFPS and
back to RX.Detect which eventually time out, meaning that RX.Detect
failed and link transitions to SS.Disabled:

     irq/23-dwc3-995   [000] d..1  1427.911837: dwc3_event: event (00040301): Link Change [SS.Disabled]

From there, XHCI puts the SS link to U3 and, in order to do that it must
go through RX.Detect, U0 and finally U3 (note that here U0 comes before
RX.Detect, but I suppose that's some side effect of tracing since that's
not a valid transition per figure 7-14):

     irq/23-dwc3-995   [000] d..1  1427.911849: dwc3_event: event (00000301): Link Change [U0]
     irq/23-dwc3-995   [000] d..1  1427.914818: dwc3_event: event (00050301): Link Change [RX.Detect]
     irq/23-dwc3-995   [000] d..1  1427.917746: dwc3_event: event (00030301): Link Change [U3]

Now, we get a reset which is actually an SE0 signal on the bus:

     irq/23-dwc3-995   [000] d..1  1435.982020: dwc3_event: event (00000101): Reset [U0]

For whatever reason that shows as Full Speed J on LeCroy traces. Go
figure.

In any case, the problem here seems to be that device side was unable to
transmit TS1 when exiting U2. Then it was, consequently, unable to
perform RX.Detect and link was disabled and switched to full-speed and
negotiated high-speed later on by means of chirp sequences.

I would really suggest running without LPM to get some more information
since this seems to be rather clearly related to U2 exit. At the point
of failure, it may also be a good idea to check the state of your PHYs
it could be that the PHY got stuck in some weird state. Another thing to
look at would be super speed eye diagram measurements, known errata for
PHYs and redriver.

Please, keep us posted.

cheers

-- 
balbi

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux