From nobody Wed May 07 21:37:15 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Zt7rr6Chrz5vL29; Wed, 07 May 2025 21:37:16 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R11" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Zt7rr0RJCz3mJ9; Wed, 07 May 2025 21:37:16 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1746653836; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2tWai8Edds1gJf9P7q0uCNsFtzoGdX4sYhUhVA/Ci4M=; b=C2Wth1T/IzTuCHZdnbkTZpxG3JsL1UvioNDaKcNcLLakv+4T9vPyGNYYDcvQ6YGhS1nCuJ HGG0nXkD+RAxNDzabeugOImY5E8+xczicxD1LKAUoNE+QpsJWbEEWV1IguPqGpXLRn7lSb JV1aN4UcjZ1kALWeN+GHvz+UhHMoj/k/60zllVBTe/aeqDBu52jez1l9KfyxyyxFAjgl1u iU82dveXr/uEIUqCdsHRHmPrRWf0xMlQPvjQPjCVFW2zw9BJNQqmh990OuVxOxnbpomeZ1 E6cAWaQPFUjX8zZ9XzfdNKeIuxUOUxXcBViAHkts9V3rVJcEeK2HZ2yZ8CUMxA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1746653836; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=2tWai8Edds1gJf9P7q0uCNsFtzoGdX4sYhUhVA/Ci4M=; b=vUdrsi4Ei0eLI9nsL11iKJX+7oNfm5fRyqKWLPOEVALQUsqz6nHKzfDNUUg6mQJYRrTeHm K2LW9zLy7Dl4CF7IdFlllbz3HA0seXEcSU2gliib+mxvvuwEYVa6DavlJJ4ObGXmo3ueV6 cG35voUGWn/hApnFv4GgG9xRmJVgm8fOMRUzTpdDwoPu4Z/k4234CKgNC5Lb6/sysbwP7t a1xZ0ykBQ6viwj444c8aHHIpCkwiR5mNdLBIOignlDRKmzTOqqP0vHo3cscEqIayl2qZ4i m91E7Tx/zccUfh+1kP+yq+p1ORhugAcGgsoQb6Cpy5G3bxNoMWfsf/M5JZZwFg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1746653836; a=rsa-sha256; cv=none; b=ZR8AKyfNV3JSgFrfrwdywtdCKv6y7k57vCWohxEkZkO0U/9ZqPYXgRSO1e6jLRIS8KNt/P cC22d5lCBPoGg5H0iejkrasXCWzK00ogJ4Hy5mrQzzS/ZBuyhNq3OgZJo78dx/UuoE8HzS 0caarSqGCq4zprwga2CJT50ihOu6LyyiD0SLNjdU2zyToubJLX7C6SZCnaBGFet1CNNuHt cP83PX05GoUZw2hoJOcW/v5ninbUc++Q1c4MTZoRE1a1H9fmM48U5liyhORvuTjy31ICx5 nQKXeGHMUhHlg2RxnyY+gLsvAwpiWNWji8oLDOhaaImoeq11j7rnNwkt4ur9iQ== ARC-Authentication-Results: i=1; mx1.freebsd.org; none Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Zt7rq6YGyzn6Y; Wed, 07 May 2025 21:37:15 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 547LbF5V092257; Wed, 7 May 2025 21:37:15 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 547LbFOt092254; Wed, 7 May 2025 21:37:15 GMT (envelope-from git) Date: Wed, 7 May 2025 21:37:15 GMT Message-Id: <202505072137.547LbFOt092254@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Warner Losh Subject: git: ec3cc37bd938 - main - umass: Bring in small fix from NetBSD's umass List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: imp X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ec3cc37bd938446839a34ab9eca79c75257383e1 Auto-Submitted: auto-generated The branch main has been updated by imp: URL: https://cgit.FreeBSD.org/src/commit/?id=ec3cc37bd938446839a34ab9eca79c75257383e1 commit ec3cc37bd938446839a34ab9eca79c75257383e1 Author: Warner Losh AuthorDate: 2025-05-07 16:07:50 +0000 Commit: Warner Losh CommitDate: 2025-05-07 21:36:55 +0000 umass: Bring in small fix from NetBSD's umass When completing a request for UFI, don't fail the request on non-zero asc/ascq values if we've done a request sense. This idea is from umass.c 1.100 by mycroft. He used it to help elminate the INQUIRY_SHORT quirk that we still have. However, it will make little difference because we treat both return values the same for CBI. And it appears we have (maybe bogusly) some devices that specify this quirk that aren't CBI. Sponsored by: Netflix Differential Revision: https://reviews.freebsd.org/D49475 --- sys/dev/usb/storage/umass.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/sys/dev/usb/storage/umass.c b/sys/dev/usb/storage/umass.c index c3a5028f5726..cacf4ddf8f16 100644 --- a/sys/dev/usb/storage/umass.c +++ b/sys/dev/usb/storage/umass.c @@ -431,6 +431,7 @@ struct umass_softc { uint8_t sc_maxlun; /* maximum LUN number, inclusive */ uint8_t sc_last_xfer_index; uint8_t sc_status_try; + bool sc_sending_sense; }; struct umass_probe_proto { @@ -2013,16 +2014,20 @@ umass_t_cbi_status_callback(struct usb_xfer *xfer, usb_error_t error) /* * Section 3.4.3.1.3 specifies that the UFI command * protocol returns an ASC and ASCQ in the interrupt - * data block. + * data block. However, we might also be fetching the + * sense explicitly, where they are likely to be + * non-zero, in which case we should succeed. */ DPRINTF(sc, UDMASS_CBI, "UFI CCI, ASC = 0x%02x, " "ASCQ = 0x%02x\n", sc->sbl.ufi.asc, sc->sbl.ufi.ascq); - status = (((sc->sbl.ufi.asc == 0) && - (sc->sbl.ufi.ascq == 0)) ? - STATUS_CMD_OK : STATUS_CMD_FAILED); + if ((sc->sbl.ufi.asc == 0 && sc->sbl.ufi.ascq == 0) || + sc->sc_transfer.cmd_data[0] == REQUEST_SENSE) + status = STATUS_CMD_OK; + else + status = STATUS_CMD_FAILED; sc->sc_transfer.ccb = NULL;