• M
    USB: xhci: Reset a halted endpoint immediately when we encounter a stall. · 8e71a322
    Mathias Nyman 提交于
    If a device is halted and reuturns a STALL, then the halted endpoint
    needs to be cleared both on the host and device side. The host
    side halt is cleared by issueing a xhci reset endpoint command. The device side
    is cleared with a ClearFeature(ENDPOINT_HALT) request, which should
    be issued by the device driver if a URB reruen -EPIPE.
    
    Previously we cleared the host side halt after the device side was cleared.
    To make sure the host side halt is cleared in time we want to issue the
    reset endpoint command immedialtely when a STALL status is encountered.
    
    Otherwise we end up not following the specs and not returning -EPIPE
    several times in a row when trying to transfer data to a halted endpoint.
    
    Fixes: bcef3fd5 (USB: xhci: Handle errors that cause endpoint halts.)
    Cc: <stable@vger.kernel.org> # v2.6.33+
    Tested-by: NFelipe Balbi <balbi@ti.com>
    Signed-off-by: NMathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: NGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    8e71a322
xhci-ring.c 120.6 KB