Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753290AbdLULDx (ORCPT ); Thu, 21 Dec 2017 06:03:53 -0500 Received: from szxga02-in.huawei.com ([45.249.212.188]:2492 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752483AbdLULDt (ORCPT ); Thu, 21 Dec 2017 06:03:49 -0500 From: Lipengcheng To: "balbi@kernel.org" CC: "linux-usb@vger.kernel.org" , "linux-kernel@vger.kernel.org" , Lipengcheng Subject: [PATCH] usb: dwc3: gadget:Core consumes a trb software to fill a trb, in ISO Thread-Topic: [PATCH] usb: dwc3: gadget:Core consumes a trb software to fill a trb, in ISO Thread-Index: AQHTeiQKaTF0bts+TkiJSeXlM4bbfQ== Date: Thu, 21 Dec 2017 11:03:44 +0000 Message-ID: <637796ED17F7774FB27D6AAE3C6951584B38C043@dggeml508-mbx.china.huawei.com> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.67.222.17] Content-Type: text/plain; charset="utf-8" Content-ID: <1EC947C96A0038439007BFE60EC133B3@huawei.com> MIME-Version: 1.0 X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by mail.home.local id vBLB3vpq016977 Content-Length: 984 Lines: 27 Iso transmission, the current process is that all trb(HWO=1) is handled. Then core generate DWC3_DEPEVT_XFERNOTREADY event, Software begin refill trb, this will produce 0 length package, the patch is to achieve the core consumes a trb, and then the software fill a trb. Normally, there will never be DWC3_DEPEVT_XFERNOTREADY event and 0-length packet. Signed-off-by: l00229106 --- drivers/usb/dwc3/gadget.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c index 981fd98..1e6c42e 100644 --- a/drivers/usb/dwc3/gadget.c +++ b/drivers/usb/dwc3/gadget.c @@ -2420,7 +2420,7 @@ static void dwc3_endpoint_transfer_complete(struct dwc3 *dwc, if (!dep->endpoint.desc) return; - if (!usb_endpoint_xfer_isoc(dep->endpoint.desc)) + if (!usb_endpoint_xfer_isoc(dep->endpoint.desc) || (dep->flags & DWC3_EP_TRANSFER_STARTED)) __dwc3_gadget_kick_transfer(dep); } -- 2.7.4