• Sarah Sharp's avatar
    USB: xhci: Handle babbling endpoints correctly. · 83fbcdcc
    Sarah Sharp authored
    The 0.95 xHCI spec says that non-control endpoints will be halted if a
    babble is detected on a transfer.  The 0.96 xHCI spec says all types of
    endpoints will be halted when a babble is detected.  Some hardware that
    claims to be 0.95 compliant halts the control endpoint anyway.
    
    When a babble is detected on a control endpoint, check the hardware's
    output endpoint context to see if the endpoint is marked as halted.  If
    the control endpoint is halted, a reset endpoint command must be issued
    and the transfer ring dequeue pointer needs to be moved past the stopped
    transfer.  Basically, we treat it as if the control endpoint had stalled.
    
    Handle bulk babbling endpoints as if we got a completion event with a
    stall completion code.
    Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
    Cc: stable <stable@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    83fbcdcc
xhci-ring.c 60.5 KB