From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga04.intel.com ([192.55.52.120]:30150 "EHLO mga04.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751239AbdDJHEO (ORCPT ); Mon, 10 Apr 2017 03:04:14 -0400 From: Felipe Balbi To: Thinh Nguyen , linux-usb@vger.kernel.org Cc: John Youn , Thinh Nguyen , stable@vger.kernel.org Subject: Re: [PATCH 2/3] usb: dwc3: gadget: Fix early exit in set/clear ep halt In-Reply-To: <8760icg2zx.fsf@linux.intel.com> References: <8760icg2zx.fsf@linux.intel.com> Date: Mon, 10 Apr 2017 10:03:51 +0300 Message-ID: <8737dgg2w8.fsf@linux.intel.com> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha256; protocol="application/pgp-signature" Sender: stable-owner@vger.kernel.org List-ID: --=-=-= Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Hi again, Felipe Balbi writes: > Thinh Nguyen writes: >> This patch fixes a commit that causes a hang from device waiting for >> data with the wrong sequence number. The commit ffb80fc672c3 ("usb: >> dwc3: gadget: skip Set/Clear Halt when invalid") adds a check to return >> early depending on DWC3_EP_STALL is set or not, prevent sending the ep >> halt command to HW endpoint to do CLEAR_FEATURE(ENDPOINT_HALT) request. >> This was to workaround the issue for macOS where the device hangs from >> sending DWC3 clear stall command. >> >> In USB 3.1 spec, 9.4.5, CLEAR_FEATURE(ENDPOINT_HALT) request always >> results in the data sequence being reinitialized to zero regardless >> whether the endpoint has been halted or not. Some device class depends >> on this feature for its protocol. For instance, in mass storage class, >> there is MSC reset protocol that does CLEAR_FEATURE(ENDPOINT_HALT) on >> bulk endpoints. This protocol reinitializes the data sequence and >> ensures that whatever pending data requested from previous CBW will be >> reset. Otherwise this will cause a hang as the device can wait for the >> data with the wrong sequence number from the previous CBW. We found this >> failure in USB CV: MSC Error Recovery Test with f_mass_storage. >> >> This patch fixes this issue by checking to see whether the set/halt ep >> call is a protocol call before early exit to make sure that set/clear >> halt endpoint command can go through if it is a device class protocol. >> >> Fixes: ffb80fc672c3 ("usb: dwc3: gadget: skip Set/Clear Halt when invali= d") >> Signed-off-by: Thinh Nguyen > > this will regress the macOS case I wrote that commit for. We need to no wait, it won't regress macOS, but we're still left with the problem of host and peripheral being able to get DataToggle/SeqN out of sync. =2D-=20 balbi --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCAAdFiEElLzh7wn96CXwjh2IzL64meEamQYFAljrLlcACgkQzL64meEa mQY21BAAuO7fsAFkU2uM5shWmYyPmkXQFyPIdQ92o7LUxMMSJ+m6kSbXScAJSMdO oIawTBmCaWxXd4pEUFnlkieet227Kw+p/UGRO6vhTl+y/5Pom+JY+9GaO0nfzX3M ZRDMKyTPDpLdOvy6ZrXu+SuK0t1kBDxhuABBORgZyjGyV4n/ny+EMHjH0xR0lMWv JMltF8QpZw12iM6xPhUxTY8wRo3RKKlFOPIKXjxNIOl4A9wVWiMBlChe/tumwQuf EMLU2dx2Pws0iwAfZEh82Zgk5rWu/xA7aG+HhARrIXtFDy9bU9HrFydImW6rSvwL YYkITMsnzPAvWPYESKlnyAMnqC2Pvnydreh4TsXh2RAWbCcNqWbQkYxUjmWbjcJC aHDL+JxMqzHPMH6ZqudXPYC98SEMhr6NsTGSzOz0gYKLwQMnegtKPJfF4Gsf3dhM uz1/XCN6Eo+bx6ZpceIHvP7e2x+AKnpn80fN6JSjnN+YSomMChRXJcb4MAyT/7fA GkrdVTAEHd4UEPC4cXfkNn13lOI0OUl4YP0tumNj1ANbV9J1WQGo4ABr/d+guD1K po7LdRaOdJ2HBQEWPdlJ1VoGIhxDfM2oixppTGkWRIktjJJt7eikZrL+Yx8Q35jv sGQl2CbZihjC+RNmnNmbj+WbxWiEXbPmxaN+QyJG+Rlp6oBLA7c= =8X8f -----END PGP SIGNATURE----- --=-=-=--