ALSA: firewire-lib: code refactoring for jumbo payload quirk
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Tue, 18 May 2021 08:45:55 +0000 (17:45 +0900)
committerTakashi Iwai <tiwai@suse.de>
Tue, 18 May 2021 10:23:55 +0000 (12:23 +0200)
A new macro is added to describe the maximum number of cycles to accept
cycle skip by jumbo payload quirk.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Link: https://lore.kernel.org/r/20210518084557.102681-10-o-takashi@sakamocchi.jp
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/firewire/amdtp-stream.c

index b14c392..409274a 100644 (file)
 #define IT_PKT_HEADER_SIZE_CIP         8 // For 2 CIP header.
 #define IT_PKT_HEADER_SIZE_NO_CIP      0 // Nothing.
 
+// The initial firmware of OXFW970 can postpone transmission of packet during finishing
+// asynchronous transaction. This module accepts 5 cycles to skip as maximum to avoid buffer
+// overrun. Actual device can skip more, then this module stops the packet streaming.
+#define IR_JUMBO_PAYLOAD_MAX_SKIP_CYCLES       5
+
 static void pcm_period_work(struct work_struct *work);
 
 /**
@@ -316,7 +321,7 @@ unsigned int amdtp_stream_get_max_payload(struct amdtp_stream *s)
        unsigned int cip_header_size = 0;
 
        if (s->flags & CIP_JUMBO_PAYLOAD)
-               multiplier = 5;
+               multiplier = IR_JUMBO_PAYLOAD_MAX_SKIP_CYCLES;
        if (!(s->flags & CIP_NO_HEADER))
                cip_header_size = sizeof(__be32) * 2;