• Stefan Richter's avatar
    firewire: fw-sbp2: enforce s/g segment size limit · 09b12dd4
    Stefan Richter authored
    1. We don't need to round the SBP-2 segment size limit down to a
       multiple of 4 kB (0xffff -> 0xf000).  It is only necessary to
       ensure quadlet alignment (0xffff -> 0xfffc).
    
    2. Use dma_set_max_seg_size() to tell the DMA mapping infrastructure
       and the block IO layer about the restriction.  This way we can
       remove the size checks and segment splitting in the queuecommand
       path.
    
       This assumes that no other code in the firewire stack uses
       dma_map_sg() with conflicting requirements.  It furthermore assumes
       that the controller device's platform actually allows us to set the
       segment size to our liking.  Assert the latter with a BUG_ON().
    
    3. Also use blk_queue_max_segment_size() to tell the block IO layer
       about it.  It cannot know it because our scsi_add_host() does not
       point to the FireWire controller's device.
    
    Thanks to Grant Grundler and FUJITA Tomonori for advice.
    Signed-off-by: default avatarStefan Richter <stefanr@s5r6.in-berlin.de>
    09b12dd4
fw-sbp2.c 46.6 KB