summaryrefslogtreecommitdiffstats
path: root/sound/firewire/amdtp-stream.c
diff options
context:
space:
mode:
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>2019-07-07 14:07:54 +0200
committerTakashi Iwai <tiwai@suse.de>2019-07-08 14:50:37 +0200
commit7fbf909668d69d7ab4428f6f55cb53fe4451b9b1 (patch)
treee5e9ec91cc41cc29aee6199bae32f81a2041107b /sound/firewire/amdtp-stream.c
parentALSA: firewire-lib: fix invalid length of rx packet payload for tracepoint ev... (diff)
downloadlinux-7fbf909668d69d7ab4428f6f55cb53fe4451b9b1.tar.xz
linux-7fbf909668d69d7ab4428f6f55cb53fe4451b9b1.zip
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: 76864868dbab ("ALSA: firewire-lib: cache next data_block_counter after probing tracepoints event for IR context") Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp> Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to '')
-rw-r--r--sound/firewire/amdtp-stream.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/sound/firewire/amdtp-stream.c b/sound/firewire/amdtp-stream.c
index 427624009de9..b60cf25ee5a8 100644
--- a/sound/firewire/amdtp-stream.c
+++ b/sound/firewire/amdtp-stream.c
@@ -646,8 +646,12 @@ static int parse_ir_ctx_header(struct amdtp_stream *s, unsigned int cycle,
err = 0;
*data_blocks = *payload_length / sizeof(__be32) /
s->data_block_quadlets;
- *dbc = s->data_block_counter;
*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)