• Stefan Richter's avatar
    firewire: prevent creation of multiple IR DMA contexts for the same channel · 4817ed24
    Stefan Richter authored
    OHCI-1394 1.1 clause 10.4.3 says:  "If more than one IR DMA context
    specifies receives for packets from the same isochronous channel, the
    context destination for that channel's packets is undefined."
    
    Any userspace client and in the future also kernelspace clients can
    allocate IR DMA contexts for any channel.  We don't want them to
    interfere with each other, hence it is preferable to return -EBUSY if
    allocation of a second context for a channel is attempted.
    
    Notes:
      - This limitation is OHCI-1394 specific, therefore its proper place of
        implementation is down in the low-level driver.
    
      - Since the <linux/firewire-cdev.h> ABI simply maps one userspace iso
        client context to one hardware iso context, this OHCI-1394
        limitation alas requires userspace to implement its own multiplexing
        of iso reception from the same channel and card to multiple clients
        when needed.
    
      - The limitation is independent of channel allocation at the IRM; the
        latter is really only important for the initiation of iso 
        transmission but not of iso reception.
    
      - We don't need to do the same for IT DMA because OHCI-1394 does not
        have any ties between IT contexts and channels.  Only the voluntary
        channel allocation protocol via the IRM, globally to the FireWire
        bus, can ensure proper isochronous transmit behaviour anyway.
    Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
    4817ed24
fw-iso.c 3.83 KB