• Dan Streetman's avatar
    USB: ehci-sched.c: EHCI SITD scheduling bugfix · c065c60e
    Dan Streetman authored
    Without this patch, the driver won't check that the last fully-occupied
    uframe for a new split transaction was vacant beforehand.  This can
    lead to a situation in which the first 188 bytes of a 192-byte
    isochronous transfer are scheduled in the same uframe as an existing
    interrupt transfer.  The resulting schedule looks like this:
    
           uframe 0: 188-byte isoc-OUT SSPLIT, 8-byte int-IN SSPLIT
           uframe 1: 4-byte isoc-OUT SSPLIT
    
    The SSPLITs are intermingled, causing an error in the downstream hub's
    TT.
    
    If you are having problems with devices or hub ports resetting, or failed
    interrupt transfers, when you start using a USB audio or video (Isochronous)
    device, this patch may help.
    Signed-off-by: default avatarDan Streetman <ddstreet@ieee.org>
    Reported-by: default avatarKung James <kong1191@gmail.com>
    Acked-by: default avatarDavid Brownell <dbrownell@users.sourceforge.net>
    Cc: Alan Stern <stern@rowland.harvard.edu>
    
    c065c60e
ehci-sched.c 60.3 KB