• Takashi Sakamoto's avatar
    ALSA: firewire-lib: handle IT/IR contexts in each software interrupt context · dec63cc8
    Takashi Sakamoto authored
    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.htmlSigned-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
    dec63cc8
amdtp-stream.c 23.6 KB