From patchwork Fri Aug 17 10:51:52 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zeng Tao X-Patchwork-Id: 144453 Delivered-To: patch@linaro.org Received: by 2002:a2e:9754:0:0:0:0:0 with SMTP id f20-v6csp237834ljj; Thu, 16 Aug 2018 19:55:01 -0700 (PDT) X-Google-Smtp-Source: AA+uWPwqKh89MkYUodRmFrrU2B+59nPXoyrBep8mBXXc+ttaQO9Rvfk1JunaANfI1BrTzXZmwyCl X-Received: by 2002:a63:2506:: with SMTP id l6-v6mr30949682pgl.237.1534474501708; Thu, 16 Aug 2018 19:55:01 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534474501; cv=none; d=google.com; s=arc-20160816; b=GGhEUe9SaUlxBR107GwlOE85ycLvgP3B2YfH4T/5SVX76EgZTd5zswOhc/Z0qGTf4Z +4/C8rZqf/rXs37hb5HClp62lZkMuhigKAFWFds5cIaoqlxQg02z53R6qOBzCtlrCY0H 96Jvzlzk94UMfHg2SIVIrKU7lkh/AqT6ki7BSvAYQ99xGlSjKam59qtMBpwUJLYcoQo0 +0E2m/WsmVxaP/LiBPwlouIJHjuQ8/Qaqlqqv+Vanmg+PKY2LVVY7X5adsYaBCd0Gxzq PMohrayA7KRAQ5NT+ulCCEuxv7N3OeWamsnocghqMDkCwZKC/Ggm64EqT7po8WL15ex2 PSTw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:message-id:date:subject:cc :to:from:arc-authentication-results; bh=byUdFeoNwWGDlBClwqPi4xRkXZ5LmIAFoRbYZEe0kSc=; b=Ei5uyToLo5gmvbWJVJ1/XjcrNArubl8z+00eH6LeC9VsuEn5JtYETwYakpqV5nNAgE OlioS/BeIM7qMdWUAB4hzfOR926tcpAhtwTmVhArAYBA/6CuhiIKpMm0FZXlShtsCtMp aHNkxzE+9Gx9DmLnuapHRnWpiA6MMPNxCay3fd5TsJMzrV8EXnndid25PEdvryGkIm2i xpHvKOPPQNkyl1ga84E/8uT4zfaX2K8z5m8iTaj9peSf0pFlkuEF25Y4NqSR2tl9po5A MbCc5MJTAmRMZu5N4vC4T98pUW6ofSiCG4YeuPj8Lc4hziQVsMwXuQ4odGfnYgoKPgW0 d8Bg== ARC-Authentication-Results: i=1; mx.google.com; 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 s65-v6si1027226pfb.271.2018.08.16.19.55.01; Thu, 16 Aug 2018 19:55:01 -0700 (PDT) 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; 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 S1726341AbeHQF43 (ORCPT + 32 others); Fri, 17 Aug 2018 01:56:29 -0400 Received: from szxga06-in.huawei.com ([45.249.212.32]:57262 "EHLO huawei.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1726097AbeHQF43 (ORCPT ); Fri, 17 Aug 2018 01:56:29 -0400 Received: from DGGEMS410-HUB.china.huawei.com (unknown [172.30.72.60]) by Forcepoint Email with ESMTP id 4833167BF75F7; Fri, 17 Aug 2018 10:54:51 +0800 (CST) Received: from dessert.huawei.com (10.69.192.158) by DGGEMS410-HUB.china.huawei.com (10.3.19.210) with Microsoft SMTP Server id 14.3.399.0; Fri, 17 Aug 2018 10:54:43 +0800 From: Zeng Tao To: , , , , , , , CC: Zeng Tao , Jonathan Corbet , Thomas Gleixner , Ingo Molnar , "Rafael J. Wysocki" , Marc Zyngier , Kai-Heng Feng , "Thymo van Beers" , Frederic Weisbecker , Konrad Rzeszutek Wilk , "David Rientjes" , , , Subject: [PATCH v2] usb: hub: try old enumeration scheme first for high speed devices Date: Fri, 17 Aug 2018 18:51:52 +0800 Message-ID: <1534503120-1226-1-git-send-email-prime.zeng@hisilicon.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 X-Originating-IP: [10.69.192.158] X-CFilter-Loop: Reflected Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The new scheme is required just to support legacy low and full-speed devices. For high speed devices, it will slower the enumeration speed. So in this patch we try the "old" enumeration scheme first for high speed devices, and this is what Windows does since Windows 8. Signed-off-by: Zeng Tao --- Changes in v2: 1. As suggested by Alan, mention in the commit log that this change is follow what the Window does. 2. As suggested by Roger, update the kernel-parameter description. --- Documentation/admin-guide/kernel-parameters.txt | 3 ++- drivers/usb/core/hub.c | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) -- 2.7.4 diff --git a/Documentation/admin-guide/kernel-parameters.txt b/Documentation/admin-guide/kernel-parameters.txt index 533ff5c..95db23c 100644 --- a/Documentation/admin-guide/kernel-parameters.txt +++ b/Documentation/admin-guide/kernel-parameters.txt @@ -4453,7 +4453,8 @@ usbcore.old_scheme_first= [USB] Start with the old device initialization - scheme (default 0 = off). + scheme, applies only to low and full-speed devices + (default 0 = off). usbcore.usbfs_memory_mb= [USB] Memory limit (in MB) for buffers allocated by diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 1fb2668..d265b19 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -2661,10 +2661,13 @@ static bool use_new_scheme(struct usb_device *udev, int retry, int old_scheme_first_port = port_dev->quirks & USB_PORT_QUIRK_OLD_SCHEME; + int quick_enumeration = (udev->speed == USB_SPEED_HIGH); + if (udev->speed >= USB_SPEED_SUPER) return false; - return USE_NEW_SCHEME(retry, old_scheme_first_port || old_scheme_first); + return USE_NEW_SCHEME(retry, old_scheme_first_port || old_scheme_first + || quick_enumeration); } /* Is a USB 3.0 port in the Inactive or Compliance Mode state?