Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp1184610ybf; Thu, 27 Feb 2020 06:28:59 -0800 (PST) X-Google-Smtp-Source: APXvYqymlnRHuWKyf4uNNRlBA+154GA0o+MMWG+M0KwTDBK0jknsdeaEFdG0bsjMRARye39M+qQx X-Received: by 2002:aca:aa0a:: with SMTP id t10mr3423042oie.156.1582813739797; Thu, 27 Feb 2020 06:28:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1582813739; cv=none; d=google.com; s=arc-20160816; b=p7D4HEMYXnipWMcXWyfZ4UivCU1VUJoXmshD7RP50tuTnsR4rQOYkohLCrU4pV6H2i 7HNwUaOlEbbtj/Y0urfJ2T87e7PqVbaKW+2Y3CJIJnErvEENe8B/wpGRcqFuIogZizaZ 4M4LAnDFi/CjtVYXT5JtjziPi6j+Ch9jWYcfbnnJ5ET4lsO4ukvbj9yQgS8YZmMfDBjt Y7/nhWjkvnFiTlzc3PhFI7AyPb+l/TO15ogjdxIIGoSs8lA3FgoSvWq0ovIdLoNFaGdQ oJSVBtvu92uWDvV/0tV3xH+x65Gc7isggK7++FyvWP42Jw4/rSM0nLT+5tlLUGaoTjgC f7jA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=x0zxBcIyllvptvVUdCdKO/Pzzw1yLKp4Atw2brp3T70=; b=NDywK0qab6R9CNm0mL4GrwxhgnP/t81sfdCnkL69aH/hqqzdRR1NZ2qYkQcx5KmHHK UhPWs2zX8PhF2hDm8N9KEwDilpn0aCujQlIdF0+KPMxAVeWkC5gHwMuEU9BfcFQEbFK2 SSG8dbxKSE96iQwpN0apZ+8EGthhVicyXFBjpZqyXFh1PcRlgcue33AbINJ7Wvs1DGvW lrV4isBylMGj4D/G+3f3kUiATXBvT2xNGNn8EK7JlQSP5hWyjGRh0HtgZhuVHuUdZUUb n4Xj7Kue7bswEcms9ruJnlEQOKJtat7pv0fARfo/V54Jf2dDV+mzg3C2YtuVomvFflMy fTOA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="n/466QPA"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id d125si1273747oia.86.2020.02.27.06.28.35; Thu, 27 Feb 2020 06:28:59 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b="n/466QPA"; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388876AbgB0O1h (ORCPT + 99 others); Thu, 27 Feb 2020 09:27:37 -0500 Received: from mail.kernel.org ([198.145.29.99]:46592 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387557AbgB0OIo (ORCPT ); Thu, 27 Feb 2020 09:08:44 -0500 Received: from localhost (83-86-89-107.cable.dynamic.v4.ziggo.nl [83.86.89.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 4316021D7E; Thu, 27 Feb 2020 14:08:43 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1582812523; bh=IAbXsdKThfWp5kflFnf+H5CpkjsYJ220+iv2NJURT2I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=n/466QPAey9PRYYFGeB/APO/njvw9wMjGM8ylAmhvcJlkFaDxVJa6gOtPF6AjRDKL rFPDNgjTnuFPBQ1x1JH4BZg+V1pADmeD+Zkhc7p0bp+7bkrMJpFk5ImessUJLNsrhI RCv1+J97QLKcqqyOoHWf2LMDyctvXyYl3lNc9reY= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Rene D Obermueller , Mathias Nyman Subject: [PATCH 5.4 023/135] xhci: Force Maximum Packet size for Full-speed bulk devices to valid range. Date: Thu, 27 Feb 2020 14:36:03 +0100 Message-Id: <20200227132232.702723589@linuxfoundation.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200227132228.710492098@linuxfoundation.org> References: <20200227132228.710492098@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Mathias Nyman commit f148b9f402ef002b57bcff3964d45abc8ffb6c3f upstream. A Full-speed bulk USB audio device (DJ-Tech CTRL) with a invalid Maximum Packet Size of 4 causes a xHC "Parameter Error" at enumeration. This is because valid Maximum packet sizes for Full-speed bulk endpoints are 8, 16, 32 and 64 bytes. Hosts are not required to support other values than these. See usb 2 specs section 5.8.3 for details. The device starts working after forcing the maximum packet size to 8. This is most likely the case with other devices as well, so force the maximum packet size to a valid range. Cc: stable@vger.kernel.org Reported-by: Rene D Obermueller Signed-off-by: Mathias Nyman Link: https://lore.kernel.org/r/20200210134553.9144-2-mathias.nyman@linux.intel.com Signed-off-by: Greg Kroah-Hartman --- drivers/usb/host/xhci-mem.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -1475,9 +1475,15 @@ int xhci_endpoint_init(struct xhci_hcd * /* Allow 3 retries for everything but isoc, set CErr = 3 */ if (!usb_endpoint_xfer_isoc(&ep->desc)) err_count = 3; - /* Some devices get this wrong */ - if (usb_endpoint_xfer_bulk(&ep->desc) && udev->speed == USB_SPEED_HIGH) - max_packet = 512; + /* HS bulk max packet should be 512, FS bulk supports 8, 16, 32 or 64 */ + if (usb_endpoint_xfer_bulk(&ep->desc)) { + if (udev->speed == USB_SPEED_HIGH) + max_packet = 512; + if (udev->speed == USB_SPEED_FULL) { + max_packet = rounddown_pow_of_two(max_packet); + max_packet = clamp_val(max_packet, 8, 64); + } + } /* xHCI 1.0 and 1.1 indicates that ctrl ep avg TRB Length should be 8 */ if (usb_endpoint_xfer_control(&ep->desc) && xhci->hci_version >= 0x100) avg_trb_len = 8;