Commit c09010ee authored by Takashi Sakamoto's avatar Takashi Sakamoto Committed by Takashi Iwai

ALSA: firewire-lib: handle the case that empty isochronous packet payload for CIP

Two quadlets are at least included in isochronous packet payload for
Common Isochronous Packet (CIP) format in IEC 61883-1. However, it's
better to equip ALSA IEC 61883-1/6 packet streaming engine for contrary
packet.

This commit handles isochronous cycle to process such packet so that the
cycle is skipped.
Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20210518130048.146596-3-o-takashi@sakamocchi.jpSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 6d60b7a3
...@@ -656,11 +656,18 @@ static int parse_ir_ctx_header(struct amdtp_stream *s, unsigned int cycle, ...@@ -656,11 +656,18 @@ static int parse_ir_ctx_header(struct amdtp_stream *s, unsigned int cycle,
} }
if (cip_header_size > 0) { if (cip_header_size > 0) {
if (*payload_length >= cip_header_size) {
cip_header = ctx_header + 2; cip_header = ctx_header + 2;
err = check_cip_header(s, cip_header, *payload_length, err = check_cip_header(s, cip_header, *payload_length, data_blocks,
data_blocks, data_block_counter, syt); data_block_counter, syt);
if (err < 0) if (err < 0)
return err; return err;
} else {
// Handle the cycle so that empty packet arrives.
cip_header = NULL;
*data_blocks = 0;
*syt = 0;
}
} else { } else {
cip_header = NULL; cip_header = NULL;
err = 0; err = 0;
......
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