On Wed, 07 Jun 2017 02:38:05 +0200, Takashi Sakamoto wrote:
In recent commit for ALSA PCM core, some arrangement is done for 'struct snd_pcm_ops.ack' callback. This is called when appl_ptr is explicitly moved in intermediate buffer for PCM frames, except for some cases described later.
For drivers in ALSA firewire stack, usage of this callback has a merit to reduce latency between time of PCM frame queueing and handling actual packets in recent isochronous cycle, because no need to wait for software IRQ context from isochronous context of OHCI 1394.
If this works well in a case that mapped page frame is used for the intermediate buffer, user process should execute some commands for ioctl(2) to tell the number of handled PCM frames in the intermediate buffer just after handling them.
This is one thing that was raised in the discussion with Intel people, and my suggestion was to add a new flag to suppress the status/control mmap like pcm_file->no_compat_mmap. Then alsa-lib falls back to the sync_ptr ioctl, and the driver can catch each appl_ptr update.
In anyway, I applied the patch now as is. Thanks.
Takashi