From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com ([134.134.136.126]:10370 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S932620AbeFUJok (ORCPT ); Thu, 21 Jun 2018 05:44:40 -0400 From: Felipe Balbi To: liangshengjun Cc: "stable\@vger.kernel.org" , linux-usb@vger.kernel.org Subject: Re: make a confirm for [usb: dwc3: gadget: skip Set/Clear Halt when invalid] In-Reply-To: <84923CA334DF85428B9ADCEC0F3CE864BA1492@dggemm510-mbx.china.huawei.com> References: <84923CA334DF85428B9ADCEC0F3CE864BA1492@dggemm510-mbx.china.huawei.com> Date: Thu, 21 Jun 2018 12:42:12 +0300 Message-ID: <87h8lwv5l7.fsf@linux.intel.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" Sender: stable-owner@vger.kernel.org List-ID: --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi, that patch is not 100% correct. You can revert it in your tree. I added that because of a problem I found when running adb against macOS. It's actually okay to send Clear Halt at any time, but for some reason dwc3 was hanging when running adb against macOS. If you can revert the patch and make sure it works against all 3 major OSes (linux, windows and mac) I'd be really glad. liangshengjun writes: > Hi felipe, > > I have met a case about set/clear Halt patch > Version: linux v4.16, > Case: usb uvc run with bulk-mode connect to Windows 7 PC. When PC stop c= amera application , it would send clearHalt request to uvc device to stream= ing-off video transfer. > But with v4.16 dwc3 drivers, it would skip handling this clear= Halt request , because dep->flags is not DWC3_EP_STALL status, then it cau= ses PC restart camera application , uvc transfer fail. > And I have confirmed v3.18 dwc3 drivers is OK. > > So how to balance for handling clear Halt without first setHalt ?? > > PS: > commit ffb80fc672c3a7b6afd0cefcb1524fb99917b2f3 > Author: Felipe Balbi > Date: Thu Jan 19 13:38:42 2017 +0200 > > usb: dwc3: gadget: skip Set/Clear Halt when invalid > > At least macOS seems to be sending > ClearFeature(ENDPOINT_HALT) to endpoints which > aren't Halted. This makes DWC3's CLEARSTALL command > time out which causes several issues for the driver. > > Instead, let's just return 0 and bail out early. > > Cc: > Signed-off-by: Felipe Balbi > > diff --git a/drivers/usb/dwc3/gadget.c b/drivers/usb/dwc3/gadget.c > index 6faf484..0a664d8 100644 > --- a/drivers/usb/dwc3/gadget.c > +++ b/drivers/usb/dwc3/gadget.c > @@ -1379,6 +1379,9 @@ int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, = int value, int protocol) > unsigned transfer_in_flight; > unsigned started; > > + if (dep->flags & DWC3_EP_STALL) > + return 0; > + > if (dep->number > 1) > trb =3D dwc3_ep_prev_trb(dep, dep->trb_enqueue); > else > @@ -1400,6 +1403,8 @@ int __dwc3_gadget_ep_set_halt(struct dwc3_ep *dep, = int value, int protocol) > else > dep->flags |=3D DWC3_EP_STALL; > } else { > + if (!(dep->flags & DWC3_EP_STALL)) > + return 0; > > ret =3D dwc3_send_clear_stall_ep_cmd(dep); > if (ret) > > > Liang Shengjun > [cid:image001.png@01D40971.9265B340] > HISILICON TECHNOLOGIES CO., LTD. > New R&D Center, Wuhe Road, Bantian, > Longgang District, Shenzhen 518129 P.R. China > =2D-=20 balbi --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEElLzh7wn96CXwjh2IzL64meEamQYFAlsrcvQACgkQzL64meEa mQZsDxAAm/UbCCG5qSNw5qEOX3ZtapGeK9KT2I99VenpNILsLz5/76t1J72Q/qLC BKzoeKd1INjqXXIJJunAaKWsf7Ar5kAnLzli/uHOrUyT8+sbNaEk9xbvSpBwEy1D kl+Gd2yGQ3fbke+dY0nvBVBOI61OHBMXm/peE7H7atk/YDgyqpMZEABvAZpLX3Cm dfcr1KmG0rdFxuQEQvZU8SZSI0NTZMQfdUe4LAUCDoi4uOQ95PL2mVmbo3diRTy/ 0WJNjAltK8kQO7YuUJjde+Krgx09Fz+6OyYlg7rANoYIj2QMASJZhQKUHvikDcDp J//YBiDXaGwancjUeoyof3EBuO5GLqo7KaEoQ40wUCLw+XxvrXvcV8DK+z1ExChd tYNB/Qf4Ksebxi4RBv0V4EQgCv4FjdMJUQyO616B5VWP3KB6JvadydOcVQk7cmZa D4wBet/0PTaiDQxQcncchU+bznCexuT7TKyLP7VE3vj2JIAAFD896nTAl+TZhcFO HdEardsl6RzTUeTn4Evcof1LTHvLfYtX/TxZc2n6ad32kvZWhRn231p7yOfAAYNJ CeeSu9MZda3eVnIFHQ/YeTFg39HlNf2Ah+ZmGOaLel/RHPeI4sBKuClpCucO+3AO QPZXGeJBnbfFLrVyMr/V24R3em1piM9ch9RGcq9rI1i+OQfeTr0= =cWqQ -----END PGP SIGNATURE----- --=-=-=--