lkml.org 
[lkml]   [2019]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 038/137] usb: hub: delay hub autosuspend if USB3 port is still link training
    Date
    4.9-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 <mathias.nyman@linux.intel.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    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 67679f619c3b..7b6919086539 100644
    --- a/drivers/usb/core/hub.c
    +++ b/drivers/usb/core/hub.c
    @@ -1108,6 +1108,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


    \
     
     \ /
      Last update: 2019-02-11 16:06    [W:4.089 / U:0.192 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site