This patchset allows non-blocking streams to use timestamp synchronization.
In full duplex synchronization mode, current implementation pass the value of 'syt' field of CIP header in incoming packets to outgoing packet processing, while the number of data blocks is not passed. Therefore, this mode is allowed just to blocking streams, because of a lack of validator for the number which actual devices transfers. As long as the number is suspicious, it's not reused to outgoing packet processing.
To allow the synchronization mode to non-blocking streams, this patchset: * adds a validator for the number of data blocks in incoming packets * adds a flag still to support illegal models (i.e. Behringer FCA202) * pass the evaluated number from incoming packet processing to outgoing * remove the restriction
Takashi Sakamoto (4): ALSA: firewire-lib: add buffer-over-run protection at receiving more data blocks than expected ALSA: firewire-lib: simplify function to calculate the number of data blocks ALSA: firewire-lib: pass the number of data blocks in incoming packets to outgoing packets ALSA: firewire-lib: remove restriction for non-blocking mode
sound/firewire/amdtp.c | 108 ++++++++++++++++++++++++-------------- sound/firewire/amdtp.h | 4 ++ sound/firewire/oxfw/oxfw-stream.c | 10 +++- 3 files changed, 81 insertions(+), 41 deletions(-)