• Daniel Mack's avatar
    ALSA: snd_usb_caiaq: track submitted output urbs · da6094ea
    Daniel Mack authored
    The snd_usb_caiaq driver currently assumes that output urbs are serviced
    in time and doesn't track when and whether they are given back by the
    USB core. That usually works fine, but due to temporary limitations of
    the XHCI stack, we faced that urbs were submitted more than once with
    this approach.
    
    As it's no good practice to fire and forget urbs anyway, this patch
    introduces a proper bit mask to track which requests have been submitted
    and given back.
    
    That alone however doesn't make the driver work in case the host
    controller is broken and doesn't give back urbs at all, and the output
    stream will stop once all pre-allocated output urbs are consumed. But
    it does prevent crashes of the controller stack in such cases.
    
    See http://bugzilla.kernel.org/show_bug.cgi?id=40702 for more details.
    Signed-off-by: default avatarDaniel Mack <zonque@gmail.com>
    Reported-and-tested-by: default avatarMatej Laitl <matej@laitl.cz>
    Cc: Sarah Sharp <sarah.a.sharp@linux.intel.com>
    Cc: stable@kernel.org
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    da6094ea
audio.c 22.1 KB