Hi, Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx> writes: >> Thinh Nguyen <Thinh.Nguyen@xxxxxxxxxxxx> writes: >>> If dwc3 fails to issue START_TRANSFER/UPDATE_TRANSFER command, then we >>> should properly end an active transfer and give back all the started >>> requests. However if it's for an isoc endpoint, the failure maybe due to >>> bus-expiry status. In this case, don't give back the requests and wait >>> for the next retry. >>> >>> Fixes: 72246da40f37 ("usb: Introduce DesignWare USB3 DRD Driver") >>> Signed-off-by: Thinh Nguyen <thinhn@xxxxxxxxxxxx> >> could you give some details regarding when does this happen? >> > > So, here are the scenarios in which dwc3_send_gadget_ep_cmd() may return > a negative errno: > > * -EAGAIN: Isoc bus-expiry status > As you already know, this occurs when we try to schedule isoc too > late. If we're going to retry the request, don't unmap it. right > * -EINVAL: No resource due to issuing START_TRANSFER to an already > started endpoint > This happens generally because of SW programming error Sounds like this should be fixed separately and, probably, we should add a WARN() so we catch these situations. Have you reproduced this particular case? > * -ETIMEDOUT: Polling for CMDACT timed out > This should not happen unless the controller is dead or in some bad > state Understood -- balbi
Attachment:
signature.asc
Description: PGP signature