I actually wanted to wait for more input, but as the flaws reported so far were rather minor, I addressed to following details in this new round as mentioned by Takashi and Clemens:
- removed the faulty "(!u || u->urb)" check - guard the result of min() with the spinlock inside next_packet_size() - removed the tasklet and made the handler a function that is called in-place
Thanks again for the reviews, and keep them coming :)
Daniel
Daniel Mack (5): ALSA: snd-usb: add snd_usb_audio-wide mutex ALSA: snd-usb: implement new endpoint streaming model ALSA: snd-usb: switch over to new endpoint streaming logic ALSA: snd-usb: remove old streaming logic ALSA: snd-usb: add support for implicit feedback
sound/usb/card.c | 10 +- sound/usb/card.h | 62 +++ sound/usb/endpoint.c | 1454 +++++++++++++++++++++++++------------------------ sound/usb/endpoint.h | 32 +- sound/usb/pcm.c | 437 +++++++++++++--- sound/usb/stream.c | 31 +- sound/usb/usbaudio.h | 2 + 7 files changed, 1224 insertions(+), 804 deletions(-)