• Takashi Iwai's avatar
    ALSA: usb-audio: Avoid killing in-flight URBs during draining · 813a17ca
    Takashi Iwai authored
    While draining a stream, ALSA PCM core stops the stream by issuing
    snd_pcm_stop() after all data has been sent out.  And, at PCM trigger
    stop, currently USB-audio driver kills the in-flight URBs explicitly,
    then at sync-stop ops, sync with the finish of all remaining URBs.
    This might result in a drop of the drained samples as most of
    USB-audio devices / hosts allow relatively long in-flight samples (as
    a sort of FIFO).
    
    For avoiding the trimming, this patch changes the stream-stop behavior
    during PCM draining state.  Under that condition, the pending URBs
    won't be killed.  The leftover in-flight URBs are caught by the
    sync-stop operation that shall be performed after the trigger-stop
    operation.
    
    Link: https://lore.kernel.org/r/20210929080844.11583-10-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    813a17ca
pcm.c 45.5 KB