Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1756553AbeAHLvu (ORCPT + 1 other); Mon, 8 Jan 2018 06:51:50 -0500 Received: from mga01.intel.com ([192.55.52.88]:60834 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1756413AbeAHLvt (ORCPT ); Mon, 8 Jan 2018 06:51:49 -0500 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,330,1511856000"; d="asc'?scan'208";a="17550785" From: Felipe Balbi To: Lipengcheng Cc: "linux-usb\@vger.kernel.org" , "linux-kernel\@vger.kernel.org" Subject: RE: [PATCH] usb: dwc3: gadget:Core consumes a trb software to fill a trb, in ISO In-Reply-To: <637796ED17F7774FB27D6AAE3C6951584B38CDE2@dggeml508-mbx.china.huawei.com> References: <637796ED17F7774FB27D6AAE3C6951584B38C043@dggeml508-mbx.china.huawei.com> <87zi6bp59h.fsf@linux.intel.com> <637796ED17F7774FB27D6AAE3C6951584B38CDE2@dggeml508-mbx.china.huawei.com> Date: Mon, 08 Jan 2018 13:50:26 +0200 Message-ID: <87a7xolgcd.fsf@linux.intel.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Return-Path: --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, Lipengcheng writes: >> Lipengcheng writes: >>=20 >> > Iso transmission, the current process is that all trb(HWO=3D1) is hand= led. >> > 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-len= gth packet. >> > >> > Signed-off-by: l00229106 >>=20 >> who is 100229106?? > Sorry. It is my job number. I will use Pengcheng li to replace it. thanks >> > --- >> > 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(stru= ct 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)) >>=20 >> this is wrong. isoc endpoints should NEVER be prestarted. > The main purpose is to core handle a trb and sofware re-fill the next trb= in the DWC3_DEPEVT_XFERINPROGRESS interrupt. Mayebe it can be modified: > if (!usb_endpoint_xfer_isoc(dep->endpoint.desc)) > __dwc3_gadget_kick_transfer(dep); > + else > + dwc3_prepare_trbs(dep); > + no, this would be wrong too. Care to show me tracepoint data of what you mean? I really can't understand what problem you're facing here. Also, try a more recent kernel. I can't accept patches against a v4.4 kernel. =2D-=20 balbi --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEElLzh7wn96CXwjh2IzL64meEamQYFAlpTWwIACgkQzL64meEa mQbiQxAAns12rd6MElz1WLgbnzsZ2XFurYIrWlkK7O+Qwms/pI7SBsNNjY3QhJwx TMfwTDD8OLEC2tuHFXCHYj1AKzjqD2gW8QA2PSvc5gHrhKJwYFcsghm9Ag+LckES SWv++SuZ/tcL3xHThv44+eapEnzOBlbvxJ8Y8rvhLoeN2Zv67Iq7jpVLFCbELeBs tOpQEZgPLwSZdcoWVAUkCxLKLnwEEnSjZoKAlx7xtvGIz0xbOPbHBfC6eVmMpgmq 1WrH/0wVVwtzin5wmeLHImXBkH7leTIIuVcQf2+VtqAMagrjA1jPnzcN1qZhlwvd WSAP+mnjE2YCM7zFUVw48SlilR3YMXZlSHAP3HmpC6z2yoo/HYIyJvC7w41rGL44 VUIOVlSD4wG68E0jKWyk8vMXDs6kliy4i1E+qCOk7CnL6DrH29BhGtOtJ+Us8R2M YgyGWPP9YsJs0T/9bRs9bdaJHr72rLoyJ1ng7SNTUgCgy9QQxsuXhcmXFG1SSV1N HbNNasvjkySkBWi5SEtdl9+BC1qsU4m6TizsI6UJxtsRjvf+yF6PlBN3IZZLwSwf s/ZnfpOlYvFnDRElPytjnHak9IvH+AuC8M0rndcXoFVy160mJY2kPMU4ju8oxJ8+ gZRkQwwmNS0MhRsEEZsvjWGL33IiXm0U73nBFkzpDx+2o9w2sH0= =N3y1 -----END PGP SIGNATURE----- --=-=-=--