Hi, Minas Harutyunyan <Minas.Harutyunyan@xxxxxxxxxxxx> writes: >>>>>>> Actually to fix this issue I updated condition of wait function >>>>>>> from: >>>>>>> !(dep->flags & DWC3_EP_END_TRANSFER_PENDING) >>>>>>> to: >>>>>>> !(dep->flags & DWC3_EP_END_TRANSFER_PENDING & DWC3_EP_ENABLED) >>>>>> >>>>>> you're not fixing anything. You're, essentially, removing the entire >>>>>> end transfer pending logic. >>>>> yes, you are right, but how to overcome this infinite loop? Replace >>>>> wait_event_lock_irq() by wait_event_interruptible_lock_irq_timeout()? >>>> >>>> The best way here would be to figure why we're missing command complete >>>> IRQ in those cases. According to documentation, we *should* receive that >>>> interrupt, so why is it missing? >>>> >>> >>> Additional info on test. Core configuration is HS only mode, test speed >>> HS, core version v2.90a. Maybe it will help to understand cause of issue. >>> BTW, currently to pass above describe ISOC OUT test we just commented >>> wait_event_lock_irq() in dwc3_gadget_ep_dequeue() function and >>> successfully received request completion in function driver. >>> Thanks, >>> Minas >>> >> >> One more info: while function driver call dequeue, host periodically >> send control read command to get status of test from function - test In >> Progress or Finished. >> Thanks, >> Minas >> > > Your last dwc3 patch series allow us to successfully dequeuing remaining > requests without falling in to infinite loop. that's cool, thanks :-) I'll just fix the documentation bug I introduced heh :-) -- balbi
Attachment:
signature.asc
Description: PGP signature