linux/sound/firewire
Takashi Sakamoto 1dba9db0ea ALSA: firewire-lib: permit to flush queued packets only in process context for better PCM period granularity
These three commits were merged to improve PCM pointer granularity.
commit 76fb878948 ("ALSA: firewire-lib: taskletize the snd_pcm_period_elapsed() call")
commit e9148dddc3 ("ALSA: firewire-lib: flush completed packets when reading PCM position")
commit 92b862c7d6 ("ALSA: firewire-lib: optimize packet flushing")

The point of them is to handle queued packets not only in software IRQ
context of IR/IT contexts, but also in process context. As a result of
handling packets, period tasklet is scheduled when acrossing PCM period
boundary. This is to prevent recursive call of
'struct snd_pcm_ops.pointer()' in the same context.

When the pointer callback is executed in the process context, it's
better to avoid the second callback in the software IRQ context. The
software IRQ context runs immediately after scheduled in the process
context because few packets are queued yet.

For the aim, 'pointer_flush' is used, however it causes a race condition
between the process context and software IRQ context of IR/IT contexts.

Practically, this race is not so critical because it influences process
context to skip flushing queued packet and to get worse granularity of
PCM pointer. The race condition is quite rare but it should be improved
for stable service.

The similar effect can be achieved by using 'in_interrupt()' macro. This
commit obsoletes 'pointer_flush' with it.

Acked-by: Clemens Ladisch <clemens@ladisch.de>
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2016-05-11 20:34:53 +02:00
..
bebob ALSA: firewire-lib: enable the same feature as CIP_SKIP_INIT_DBC_CHECK flag 2016-05-10 17:04:01 +02:00
dice ALSA: dice: add support for M-Audio Profire 610 and perhaps 2626 2016-05-08 11:17:37 +02:00
digi00x ALSA: firewire-lib: enable the same feature as CIP_SKIP_INIT_DBC_CHECK flag 2016-05-10 17:04:01 +02:00
fireworks ALSA: fireworks: drop reuse of incoming packet parameter for ougoing packet parameter 2016-05-10 17:03:58 +02:00
oxfw ALSA: firewire-lib: enable the same feature as CIP_SKIP_INIT_DBC_CHECK flag 2016-05-10 17:04:01 +02:00
tascam ALSA: firewire-tascam: drop reuse of incoming packet parameter for outgoing packet parameter 2016-05-10 17:03:59 +02:00
amdtp-am824.c ALSA: firewire-lib: process_rx_data_blocks() can be static 2015-09-29 16:52:52 +02:00
amdtp-am824.h ALSA: firewire-lib: complete AM824 data block processing layer 2015-09-29 12:51:20 +02:00
amdtp-stream-trace.h ALSA: firewire-lib: add tracepoints to dump a part of isochronous packet data 2016-05-09 15:18:25 +02:00
amdtp-stream.c ALSA: firewire-lib: permit to flush queued packets only in process context for better PCM period granularity 2016-05-11 20:34:53 +02:00
amdtp-stream.h ALSA: firewire-lib: permit to flush queued packets only in process context for better PCM period granularity 2016-05-11 20:34:53 +02:00
cmp.c ALSA: firewire-lib: fix kerneldoc errors 2014-11-18 18:10:23 +01:00
cmp.h ALSA: firewire-lib: Add a new function to check others' connection 2014-05-26 14:22:46 +02:00
fcp.c ALSA: firewire-lib: rename 'amdtp' to 'amdtp-stream' to prepare for functional separation 2015-09-29 12:47:11 +02:00
fcp.h ALSA: firewire-lib: Add some AV/C general commands 2014-05-26 14:23:13 +02:00
isight.c ALSA: pcm: Add snd_pcm_stop_xrun() helper 2014-11-09 18:20:40 +01:00
iso-resources.c ALSA: firewire-lib: leave unit reference counting completely 2015-03-10 15:27:19 +01:00
iso-resources.h firewire: octlet AT payloads can be stack-allocated 2011-05-10 22:53:44 +02:00
Kconfig ALSA: firewire-tascam: add Kconfig entry for TASCAM FW-1804 2016-03-28 09:39:41 +02:00
lib.c ALSA: firewire-lib: add new function to schedule a work for sound card registration 2016-03-31 15:36:18 +02:00
lib.h ALSA: firewire-lib: add new function to schedule a work for sound card registration 2016-03-31 15:36:18 +02:00
Makefile ALSA: firewire-lib: add tracepoints to dump a part of isochronous packet data 2016-05-09 15:18:25 +02:00
packets-buffer.c sound: Add export.h for THIS_MODULE/EXPORT_SYMBOL where needed 2011-10-31 19:31:22 -04:00
packets-buffer.h ALSA: add LaCie FireWire Speakers/Griffin FireWave Surround driver 2011-03-15 08:42:22 +01:00