Re: [RFC PATCH] usb: dwc3: Poll CMDACT after issuing EndXfer command

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

 





On 25-04-24 04:06 am, Thinh Nguyen wrote:

Thanks for the data.

Ok, I remember now why we did what we did. I just notice the Fixes
commit you tag: b353eb6dc285 ("usb: dwc3: gadget: Skip waiting for
CMDACT cleared during endxfer")

I forgot that at one point we skip CMDACT for End Transfer command.
Let's not poll for CMDACT for End Transfer command and unconditionally
wait 1ms. Otherwise we may run into the issue being stuck with CMDACT
again while SETUP packet is not DMA out again. 1ms should be plenty of
time for the End Transfer command to complete.

It should look like this:

diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c
index f94f68f1e7d2..dad30c6ab19d 100644
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
@@ -1724,8 +1724,7 @@ static int __dwc3_stop_active_transfer(struct dwc3_ep *dep, bool force, bool int
         dep->resource_index = 0;
if (!interrupt) {
-               if (!DWC3_IP_IS(DWC3) || DWC3_VER_IS_PRIOR(DWC3, 310A))
-                       mdelay(1);
+               mdelay(1);
                 dep->flags &= ~DWC3_EP_TRANSFER_STARTED;
         } else if (!ret) {
                 dep->flags |= DWC3_EP_END_TRANSFER_PENDING;

Thanks,
Thinh

Ps. also please Cc stable.
Thanks for the suggestion, I had tried 1ms initially when encountering the issue and it was helping. Then I thought that CMDACT polling was better approach. But anyways I echo you, having common solution for all controller revisions is the cleaner way. I'll send V2 with mdelay(1).

Thanks again,
Prashanth K




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

  Powered by Linux