]> git.baikalelectronics.ru Git - kernel.git/commit
ALSA: firewire-lib: handle IT/IR contexts in each software interrupt context
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Mon, 9 May 2016 14:15:53 +0000 (23:15 +0900)
committerTakashi Iwai <tiwai@suse.de>
Tue, 10 May 2016 15:03:59 +0000 (17:03 +0200)
commitf19fca2273cc1c1ed55168614f010aa69fe54d6a
treed99aca29183855fe3467bf481ea5f6ffaee7f462
parent4d56adfe2f06a5e27f41bd1e35a0904610cd1ae2
ALSA: firewire-lib: handle IT/IR contexts in each software interrupt context

In clause 6.3 of IEC 61883-6:2000, there's an explanation about processing
of presentation timestamp. In the clause, we can see "If a function block
receives a CIP, processes it and subsequently re-transmits it, then the
SYT of the outgoing CIP shall be the sum of the incoming SYT and the
processing delay." ALSA firewire stack has an implementation to partly
satisfy this specification. Developers assumed the stack to perform as an
Audio function block[1].

Following to the assumption, current implementation of ALSA firewire stack
use one software interrupt context to handle both of in/out packets. In
most case, this is processed in 1394 OHCI IR context independently of the
opposite context. Thus, this implementation uses longer CPU time in the
software interrupt context. This is not better for whole system.

Against the assumption, I confirmed that each ASIC for IEC 61883-1/6
doesn't necessarily expect it to the stack. Thus, current implementation
of ALSA firewire stack includes over-engineering.

This commit purges the implementation. As a result, packets of one
direction are handled in one software interrupt context and spends
minimum CPU time.

[1] [alsa-devel] [PATCH 0/8] [RFC] new driver for Echo Audio's Fireworks based devices
http://mailman.alsa-project.org/pipermail/alsa-devel/2013-June/062660.html

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/firewire/amdtp-stream.c
sound/firewire/amdtp-stream.h