• Takashi Sakamoto's avatar
    firewire: core: expose kernel API to schedule work item to process isochronous context · 446216bd
    Takashi Sakamoto authored
    In packet-per-buffer mode for isochronous context of 1394 OHCI, software
    can schedule hardIRQ to the buffer in which the content of isochronous
    packet is processed. The actual behaviour is different between isochronous
    receive (IR) and transmit (IT) contexts in respect to isochronous cycle in
    which the hardIRQ occurs.
    
    In IR context, the hardIRQ occurs when the buffer is filled actually by
    the content of received packet. If there are any isochronous cycles in
    which the packet transmission is skipped, it is postponed to generate
    the hardIRQ in respect to the isochronous cycle. In IT context, software
    can schedule the content of packet every isochronous cycle including
    skipping, therefore the hardIRQ occurs in the isochronous cycle to which
    the software scheduled.
    
    ALSA firewire stack uses the packet-per-buffer mode for both IR/IT
    contexts. To process time stamp per packet (or per sample in some cases)
    steadily for media clock recovery against unexpected transmission skips,
    it uses an IT context to operate all of isochronous contexts by calls of
    fw_iso_context_flush_completions() in the bottom-half of hardIRQ for the
    IT context.
    
    Although it looks well to handle all of isochronous contexts in a single
    bottom-half context, it relatively takes longer time. In the future code
    integration (not yet), it is possible to apply parallelism method to
    process these context. In the case, it is useful to allow unit drivers to
    schedule work items to process these isochronous contexts.
    
    As a preparation, this commit exposes
    fw_iso_context_schedule_flush_completions() as a kernel API available by
    unit drivers. It is renamed from fw_iso_context_queue_work() since it is
    a counter part of fw_iso_context_flush_completions().
    
    Link: https://lore.kernel.org/r/20240908040549.75304-2-o-takashi@sakamocchi.jpSigned-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    446216bd
firewire.rst 1.5 KB