From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-9.1 required=3.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id E26A3C43381 for ; Mon, 18 Feb 2019 14:08:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id B29E421916 for ; Mon, 18 Feb 2019 14:08:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1550498922; bh=s6nTNQ7kGdgzgQCI2edAnPx/Qi3vZBxSYkMN0HkO6Is=; h=From:To:Cc:Subject:Date:In-Reply-To:References:List-ID:From; b=jDQ0oMofUknIZrFUjCLMiZ8ksIXRNJr8cv0WmndTO1gBVD8/wvmdmuUbwrRKro9xZ 9vpC4UrL0D2vbGiuqvYqixsZP/2J/BwSTTZcNQ8coyttJzUC5jwiNboLDE1sjaihbz MHFNpMhQjrNkWq0Etc2Z0JJkE4k72xKmJzg0Gb5o= Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2390248AbfBROIk (ORCPT ); Mon, 18 Feb 2019 09:08:40 -0500 Received: from mail.kernel.org ([198.145.29.99]:51944 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2390949AbfBROIg (ORCPT ); Mon, 18 Feb 2019 09:08:36 -0500 Received: from localhost (5356596B.cm-6-7b.dynamic.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 C72B0204FD; Mon, 18 Feb 2019 14:08:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1550498915; bh=s6nTNQ7kGdgzgQCI2edAnPx/Qi3vZBxSYkMN0HkO6Is=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MR6eOoiEwyffOWH/sNTHwXR9RTxjcsAVlvIVJneLZchF9+WR9wRfZnlbqHGsMezwc +6ymghtbZi5v7hUyxZxh6BU1cn7+IJAKi8UGjVg+1zfO262+WsXC+blGfjVkAAbt4n ybU8A4p7QACaTeW2L9NB7pr7spNMEeTXqthkdxZs= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Mathias Nyman , Alan Stern , Sasha Levin Subject: [PATCH 3.18 018/108] usb: hub: delay hub autosuspend if USB3 port is still link training Date: Mon, 18 Feb 2019 14:43:14 +0100 Message-Id: <20190218133520.353168345@linuxfoundation.org> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190218133519.525507231@linuxfoundation.org> References: <20190218133519.525507231@linuxfoundation.org> User-Agent: quilt/0.65 X-stable: review X-Patchwork-Hint: ignore 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 3.18-stable review patch. If anyone has any objections, please let me know. ------------------ [ Upstream commit e86108940e541febf35813402ff29fa6f4a9ac0b ] When initializing a hub we want to give a USB3 port in link training the same debounce delay time before autosuspening the hub as already trained, connected enabled ports. USB3 ports won't reach the enabled state with "current connect status" and "connect status change" bits set until the USB3 link training finishes. Catching the port in link training (polling) and adding the debounce delay prevents unnecessary failed attempts to autosuspend the hub. Signed-off-by: Mathias Nyman Acked-by: Alan Stern Signed-off-by: Greg Kroah-Hartman Signed-off-by: Sasha Levin --- drivers/usb/core/hub.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c index 19cc2c03906d..adf8dea1f6f3 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c @@ -1117,6 +1117,16 @@ static void hub_activate(struct usb_hub *hub, enum hub_activation_type type) USB_PORT_FEAT_ENABLE); } + /* + * Add debounce if USB3 link is in polling/link training state. + * Link will automatically transition to Enabled state after + * link training completes. + */ + if (hub_is_superspeed(hdev) && + ((portstatus & USB_PORT_STAT_LINK_STATE) == + USB_SS_PORT_LS_POLLING)) + need_debounce_delay = true; + /* Clear status-change flags; we'll debounce later */ if (portchange & USB_PORT_STAT_C_CONNECTION) { need_debounce_delay = true; -- 2.19.1