• Alan Stern's avatar
    USB: EHCI: don't send Clear-TT-Buffer following a STALL · c2f6595f
    Alan Stern authored
    This patch (as1304) fixes a regression in ehci-hcd.  Evidently some
    hubs don't handle Clear-TT-Buffer requests correctly, so we should
    avoid sending them when they don't appear to be absolutely necessary.
    The reported symptom is that output on a downstream audio device cuts
    out because the hub stops relaying isochronous packets.
    
    The patch prevents Clear-TT-Buffer requests from being sent following
    a STALL handshake.  In theory a STALL indicates either that the
    downstream device sent a STALL or that no matching TT buffer could be
    found.  In either case, the transfer is completed and the TT buffer
    does not remain busy, so it doesn't need to be cleared.
    
    Also, the patch fixes a minor flaw in the code that actually sends the
    Clear-TT-Buffer requests.  Although the pipe direction isn't really
    used for control transfers, it should be a Send rather than a Receive.
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Reported-by: default avatarJavier Kohen <jkohen@users.sourceforge.net>
    CC: David Brownell <david-b@pacbell.net>
    Cc: stable <stable@kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    c2f6595f
ehci-q.c 35.7 KB