lkml.org 
[lkml]   [2013]   [Jan]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[ 170/221] USB: Handle auto-transition from hot to warm reset.
    Date
    3.7-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    From: Sarah Sharp <sarah.a.sharp@linux.intel.com>

    commit 1c7439c61fa6516419c32a9824976334ea969d47 upstream.

    USB 3.0 hubs and roothubs will automatically transition a failed hot
    reset to a warm (BH) reset. In that case, the warm reset change bit
    will be set, and the link state change bit may also be set. Change
    hub_port_finish_reset to unconditionally clear those change bits for USB
    3.0 hubs. If these bits are not cleared, we may lose port change events
    from the roothub.

    This commit should be backported to kernels as old as 3.2, that contain
    the commit 75d7cf72ab9fa01dc70877aa5c68e8ef477229dc "usbcore: refine
    warm reset logic".

    Signed-off-by: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Acked-by: Alan Stern <stern@rowland.harvard.edu>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>

    ---
    drivers/usb/core/hub.c | 6 +++---
    1 file changed, 3 insertions(+), 3 deletions(-)

    --- a/drivers/usb/core/hub.c
    +++ b/drivers/usb/core/hub.c
    @@ -2541,16 +2541,16 @@ static void hub_port_finish_reset(struct
    clear_port_feature(hub->hdev,
    port1, USB_PORT_FEAT_C_RESET);
    /* FIXME need disconnect() for NOTATTACHED device */
    - if (warm) {
    + if (hub_is_superspeed(hub->hdev)) {
    clear_port_feature(hub->hdev, port1,
    USB_PORT_FEAT_C_BH_PORT_RESET);
    clear_port_feature(hub->hdev, port1,
    USB_PORT_FEAT_C_PORT_LINK_STATE);
    - } else {
    + }
    + if (!warm)
    usb_set_device_state(udev, *status
    ? USB_STATE_NOTATTACHED
    : USB_STATE_DEFAULT);
    - }
    break;
    }
    }



    \
     
     \ /
      Last update: 2013-01-16 02:21    [W:2.421 / U:0.284 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site