• Takashi Sakamoto's avatar
    ALSA: firewire-lib/fireworks: fix miss detection of received MIDI messages · 7fbd1753
    Takashi Sakamoto authored
    In IEC 61883-6, 8 MIDI data streams are multiplexed into single
    MIDI conformant data channel. The index of stream is calculated by
    modulo 8 of the value of data block counter.
    
    In fireworks, the value of data block counter in CIP header has a quirk
    with firmware version v5.0.0, v5.7.3 and v5.8.0. This brings ALSA
    IEC 61883-1/6 packet streaming engine to miss detection of MIDI
    messages.
    
    This commit fixes the miss detection to modify the value of data block
    counter for the modulo calculation.
    
    For maintainers, this bug exists since a commit 18f5ed36 ("ALSA:
    fireworks/firewire-lib: add support for recent firmware quirk") in Linux
    kernel v4.2. There're many changes since the commit.  This fix can be
    backported to Linux kernel v4.4 or later. I tagged a base commit to the
    backport for your convenience.
    
    Besides, my work for Linux kernel v5.3 brings heavy code refactoring and
    some structure members are renamed in 'sound/firewire/amdtp-stream.h'.
    The content of this patch brings conflict when merging -rc tree with
    this patch and the latest tree. I request maintainers to solve the
    conflict to replace 'tx_first_dbc' with 'ctx_data.tx.first_dbc'.
    
    Fixes: df075fee ("ALSA: firewire-lib: complete AM824 data block processing layer")
    Cc: <stable@vger.kernel.org> # v4.4+
    Signed-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    7fbd1753
amdtp-am824.c 11 KB