From b953e8744d8cdf529351b5379e50cb5d824db225 Mon Sep 17 00:00:00 2001 From: Takashi Sakamoto Date: Fri, 9 Oct 2015 08:10:27 +0900 Subject: [PATCH] ALSA: firewire-lib: schedule work again when MIDI substream has rest of MIDI messages Currently, when two MIDI trigger callbacks can be called immediately, transactions for the second MIDI messages can be postpone till next trigger callback. This is not good for real-time message transmission. This commit schedules work again at response handling callback if the MIDI substream still includes untransferred MIDI messages. Signed-off-by: Takashi Sakamoto Signed-off-by: Takashi Iwai --- sound/firewire/lib.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sound/firewire/lib.c b/sound/firewire/lib.c index ddc3e88ee0d19..3e9afd7d402ca 100644 --- a/sound/firewire/lib.c +++ b/sound/firewire/lib.c @@ -78,6 +78,9 @@ static void async_midi_port_callback(struct fw_card *card, int rcode, snd_rawmidi_transmit_ack(substream, port->consume_bytes); port->idling = true; + + if (!snd_rawmidi_transmit_empty(substream)) + schedule_work(&port->work); } static void midi_port_work(struct work_struct *work) -- 2.39.5