Comment 6 for bug 1577024

Matthew Giassa (mgiassa) wrote :

Patch is now in mainline. Pending the requisite testing carried out by Ubuntu team, may I please have this patch nominated for promotion to downstream jobs (ie: Xenial, Wily, and Vivid).

Thank you.

commit 6fb650d43da3e7054984dc548eaa88765a94d49f
Author: Alan Stern <email address hidden>
Date: Fri Apr 29 15:25:17 2016 -0400

    USB: leave LPM alone if possible when binding/unbinding interface drivers

    When a USB driver is bound to an interface (either through probing or
    by claiming it) or is unbound from an interface, the USB core always
    disables Link Power Management during the transition and then
    re-enables it afterward. The reason is because the driver might want
    to prevent hub-initiated link power transitions, in which case the HCD
    would have to recalculate the various LPM parameters. This
    recalculation takes place when LPM is re-enabled and the new
    parameters are sent to the device and its parent hub.

    However, if the driver does not want to prevent hub-initiated link
    power transitions then none of this work is necessary. The parameters
    don't need to be recalculated, and LPM doesn't need to be disabled and
    re-enabled.

    It turns out that disabling and enabling LPM can be time-consuming,
    enough so that it interferes with user programs that want to claim and
    release interfaces rapidly via usbfs. Since the usbfs kernel driver
    doesn't set the disable_hub_initiated_lpm flag, we can speed things up
    and get the user programs to work by leaving LPM alone whenever the
    flag isn't set.

    And while we're improving the way disable_hub_initiated_lpm gets used,
    let's also fix its kerneldoc.

    Signed-off-by: Alan Stern <email address hidden>
    Tested-by: Matthew Giassa <email address hidden>
    CC: Mathias Nyman <email address hidden>
    CC: <email address hidden>
    Signed-off-by: Greg Kroah-Hartman <email address hidden>