Commit 7fbf9096 authored by Takashi Sakamoto's avatar Takashi Sakamoto Committed by Takashi Iwai

ALSA: firewire-lib/fireface: fix initial value of data block counter for IR...

ALSA: firewire-lib/fireface: fix initial value of data block counter for IR context with CIP_NO_HEADER

For IR context, ALSA IEC 61883-1/6 engine uses initial value of data
block counter as UINT_MAX, to detect first isochronous packet in the
middle of packet streaming.

At present, when CIP_NO_HEADER is used (i.e. for ALSA fireface driver),
the initial value is used for tracepoints event. 0x00 should be
for the event when the initial value is UINT_MAX because isochronous
packets with CIP_NO_HEADER option has no field for data block count.

This commit fixes the bug.

Fixes: 76864868 ("ALSA: firewire-lib: cache next data_block_counter after probing tracepoints event for IR context")
Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 0ebf3ceb
...@@ -646,8 +646,12 @@ static int parse_ir_ctx_header(struct amdtp_stream *s, unsigned int cycle, ...@@ -646,8 +646,12 @@ static int parse_ir_ctx_header(struct amdtp_stream *s, unsigned int cycle,
err = 0; err = 0;
*data_blocks = *payload_length / sizeof(__be32) / *data_blocks = *payload_length / sizeof(__be32) /
s->data_block_quadlets; s->data_block_quadlets;
*dbc = s->data_block_counter;
*syt = 0; *syt = 0;
if (s->data_block_counter != UINT_MAX)
*dbc = s->data_block_counter;
else
*dbc = 0;
} }
if (err >= 0 && s->flags & CIP_DBC_IS_END_EVENT) if (err >= 0 && s->flags & CIP_DBC_IS_END_EVENT)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment