From: Thinh Nguyen Date: Thu, 1 Oct 2020 00:44:38 +0000 (-0700) Subject: usb: dwc3: gadget: Return early if no TRB update X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=2338484d14f3f4b3bd1f7bb416805976e7bd0cc5;p=linux.git usb: dwc3: gadget: Return early if no TRB update If the transfer had already started and there's no TRB to update, then there's no need to go through __dwc3_gadget_kick_transfer(). There is no problem reissuing UPDATE_TRANSFER command. This change just saves the driver from doing a few operations. This happens when we run out of TRB and function driver still queues for more requests. Signed-off-by: Thinh Nguyen Signed-off-by: Felipe Balbi --- diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index ff924656f6908..da1f2ad2ad90b 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -1347,6 +1347,13 @@ static int __dwc3_gadget_kick_transfer(struct dwc3_ep *dep) starting = !(dep->flags & DWC3_EP_TRANSFER_STARTED); + /* + * If there's no new TRB prepared and we don't need to restart a + * transfer, there's no need to update the transfer. + */ + if (!ret && !starting) + return ret; + req = next_request(&dep->started_list); if (!req) { dep->flags |= DWC3_EP_PENDING_REQUEST;