• Takashi Sakamoto's avatar
    firewire: core: allocate workqueue to handle isochronous contexts in card · c6fb88a5
    Takashi Sakamoto authored
    This commit adds a workqueue dedicated for isochronous context processing.
    
    The workqueue is allocated per instance of fw_card structure to satisfy the
    following characteristics descending from 1394 OHCI specification:
    
    In 1394 OHCI specification, memory pages are reserved to each isochronous
    context dedicated to DMA transmission. It allows to operate these
    per-context pages concurrently. Software can schedule hardware interrupt
    for several isochronous context to the same cycle, thus WQ_UNBOUND is
    specified. Additionally, it is sleepable to operate the content of pages,
    thus WQ_BH is not used.
    
    The isochronous context delivers the packets with time stamp, thus
    WQ_HIGHPRI is specified for semi real-time data such as IEC 61883-1/6
    protocol implemented by ALSA firewire stack. The isochronous context is not
    used by the implementation of SCSI over IEEE1394 protocol (sbp2), thus
    WQ_MEM_RECLAIM is not specified.
    
    It is useful for users to adjust cpu affinity of the workqueue depending
    on their work loads, thus WQ_SYS is specified to expose the attributes to
    user space.
    Tested-by: default avatarEdmund Raile <edmund.raile@protonmail.com>
    Link: https://lore.kernel.org/r/20240904125155.461886-2-o-takashi@sakamocchi.jpSigned-off-by: default avatarTakashi Sakamoto <o-takashi@sakamocchi.jp>
    c6fb88a5
core-card.c 22.6 KB