• Alan Stern's avatar
    USB: EHCI: accept very late isochronous URBs · 24f53137
    Alan Stern authored
    Since commits 4005ad43 (EHCI: implement new semantics for
    URB_ISO_ASAP) and c75c5ab5 (ALSA: USB: adjust for changed 3.8 USB
    API) became widely distributed, people have been experiencing problems
    with audio transfers.  The slightest underrun causes complete failure,
    requiring the audio stream to be restarted.
    
    It turns out that the current isochronous API doesn't handle underruns
    in the best way.  The ALSA developers would much rather have transfers
    that are submitted too late be accepted and complete in the normal
    fashion, rather than being refused outright.
    
    This patch implements the requested approach.  When an isochronous URB
    submission is so late that all its scheduled slots have already
    expired, a debugging message will be printed in the log and the URB
    will be accepted as usual.  Assuming it was submitted by a completion
    handler (which is normally the case), it will complete shortly
    thereafter with all the usb_iso_packet_descriptor status fields marked
    -EXDEV.
    
    This fixes (for ehci-hcd)
    
    	https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1191603
    
    It should be applied to all kernels that include commit 4005ad43.
    Signed-off-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Tested-by: default avatarMaksim Boyko <maksboyko@yandex.ru>
    CC: Clemens Ladisch <clemens@ladisch.de>
    CC: <stable@vger.kernel.org>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    24f53137
ehci-sched.c 60.6 KB