Hi, Roger Quadros <rogerq@xxxxxx> writes: >> Hmm, Link Change is disabled by default upstream, unless you're running >> on anything older than 2.50a. I don't remember the version you're using, >> though :-p > > 2.02a Thanks :-) >>> irq/170-dwc3-270 [000] d... 173.408918: dwc3_event: event (00000101): Reset [U0] >>> irq/170-dwc3-270 [000] d... 173.463787: dwc3_event: event (00000201): Connection Done [U0] >>> irq/170-dwc3-270 [000] d... 173.463796: dwc3_gadget_ep_cmd: ep0out: cmd 'Set Endpoint Configuration' [401] params 80000200 00000500 00000000 --> status: Successful >>> irq/170-dwc3-270 [000] d... 173.463799: dwc3_gadget_ep_enable: ep0out: mps 64/512 streams 0 burst 1 ring 0/0 flags E:swBp:> >>> irq/170-dwc3-270 [000] d... 173.463803: dwc3_gadget_ep_cmd: ep0in: cmd 'Set Endpoint Configuration' [401] params 80000200 02000500 00000000 --> status: Successful >>> irq/170-dwc3-270 [000] d... 173.463804: dwc3_gadget_ep_enable: ep0in: mps 64/512 streams 0 burst 1 ring 0/0 flags E:swbp:< >> >> hmm, High speed? Can we get traces for superspeed too? > > We can after I figure out the -ENODEV issue I reported above. cool >>> uvc-gadget-275 [001] d... 173.712586: dwc3_prepare_trb: ep0out: trb 4a151d32 buf 00000000ae85b000 size 8 ctrl 00000c23 (HLcs:SC:setup) >>> uvc-gadget-275 [001] d... 173.712592: dwc3_gadget_ep_cmd: ep0out: cmd 'Start Transfer' [406] params 00000000 ae85b000 00000000 --> status: Successful >>> irq/170-dwc3-270 [000] d... 173.712688: dwc3_event: event (0000c040): ep0out: Transfer Complete (sIL) [Setup Phase] >>> irq/170-dwc3-270 [000] d... 173.712690: dwc3_ctrl_req: a1 81 00 02 00 00 01 00 >> >> Another one... > > 0xa1 GetRequest directed to video data endpoint of a VideoStreaming interface, > 0x81 GET_CUR (Current setting attribute), > 0002 CT_AE_MODE_CONTROL (Auto-exposure control selector), > 0000 interface?, > length 0001, Thanks for these :-) >>> uvc-gadget-275 [001] d... 215.933842: dwc3_gadget_ep_cmd: ep1in: cmd 'End Transfer' [30c08] params 00000000 00000000 00000000 --> status: Successful >>> uvc-gadget-275 [001] .n.. 215.933980: dwc3_ep_dequeue: ep2in: req f1fb458c length 0/1024 zsI ==> -11 >>> uvc-gadget-275 [001] .n.. 215.940651: dwc3_ep_dequeue: ep2in: req 5be7fd9f length 0/1024 zsI ==> -11 >>> uvc-gadget-275 [001] .n.. 215.947297: dwc3_ep_dequeue: ep2in: req 996abf23 length 0/1024 zsI ==> -11 >>> uvc-gadget-275 [001] .n.. 215.953954: dwc3_ep_dequeue: ep2in: req d9961026 length 0/1024 zsI ==> -11 >>> uvc-gadget-275 [001] .n.. 215.960615: dwc3_free_request: ep2in: req f1fb458c length 0/1024 zsI ==> -11 >>> uvc-gadget-275 [001] .n.. 215.960617: dwc3_free_request: ep2in: req 5be7fd9f length 0/1024 zsI ==> -11 >>> uvc-gadget-275 [001] .n.. 215.960618: dwc3_free_request: ep2in: req 996abf23 length 0/1024 zsI ==> -11 >>> uvc-gadget-275 [001] .n.. 215.960619: dwc3_free_request: ep2in: req d9961026 length 0/1024 zsI ==> -11 >> >> So, first things first: >> >> Let's figure out what those class requests are and why are they *always* >> stalled. UVC class spec should answer that. > > I tried to decipher 2 class specific requests that we get. > >> >> Then we need to find out why it takes 1.5 seconds for uvc-gadget to >> queue more data. >> > > Not sure how to do that. Look at the source for uvc-gadget. If I were to guess, I'd say uvc-gadget prepares frames as a function of the requested bandwidth. It probably goes to sleep periodically until it thinks there's more data to send. Best -- balbi