• Mathias Nyman's avatar
    xhci: handle transfer events without TRB pointer · ade2e3a1
    Mathias Nyman authored
    Most transfer events have a TRB pointer indicating which TRB caused
    the event.
    In the case of streams, transfer events such as
    USB Transaction error may have its TRB pointer set to zero.
    
    driver won't know which stream or what TRB on that stream caused
    the error, but it can issue a soft reset to recover the transfer.
    A soft reset will clear the host side halt of the endpoint without
    clearing Data toggle or sequence number, and let the transfer
    continue from where it halted.
    
    see xhci section 4.12 streams and 4.6.8.2 soft retry.
    
    USB Transaction errors with a zero TRB pointer are seen with
    UAS usb devices.
    Signed-off-by: default avatarMathias Nyman <mathias.nyman@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    ade2e3a1
xhci-ring.c 124 KB