linux/drivers/infiniband/hw/mthca
David Dillow 7f9e5c48c1 IB: Increase DMA max_segment_size on Mellanox hardware
By default, each device is assumed to be able only handle 64 KB chunks
during DMA. By giving the segment size a larger value, the block layer
will coalesce more S/G entries together for SRP, allowing larger
requests with the same sg_tablesize setting.  The block layer is the
only direct user of it, though a few IOMMU drivers reference it as
well for their *_map_sg coalescing code. pci-gart_64 on x86, and a
smattering on on sparc, powerpc, and ia64.

Since other IB protocols could potentially see larger segments with
this, let's check those:

 - iSER is fine, because you limit your maximum request size to 512
   KB, so we'll never overrun the page vector in struct iser_page_vec
   (128 entries currently). It is independent of the DMA segment size,
   and handles multi-page segments already.

 - IPoIB is fine, as it maps each page individually, and doesn't use
   ib_dma_map_sg().

 - RDS appears to do the right thing and has no dependencies on DMA
   segment size, but I don't claim to have done a complete audit.

 - NFSoRDMA and 9p are OK -- they do not use ib_dma_map_sg(), so they
   doesn't care about the coalescing.

 - Lustre's ko2iblnd does not care about coalescing -- it properly
   walks the returned sg list.

This patch ups the value on Mellanox hardware to 1 GB, which matches
reported firmware limits on mlx4.

Signed-off-by: David Dillow <dillowda@ornl.gov>
Signed-off-by: Roland Dreier <roland@purestorage.com>
2011-03-22 09:39:18 -07:00
..
Kconfig kconfig: rename CONFIG_EMBEDDED to CONFIG_EXPERT 2011-01-20 17:02:05 -08:00
Makefile
mthca_allocator.c IB/mthca: Use the dma state API instead of pci equivalents 2010-04-21 15:25:34 -07:00
mthca_av.c
mthca_catas.c IB/mthca: Fix driver when sizeof (phys_addr_t) > sizeof (long) 2011-01-11 20:39:47 -08:00
mthca_cmd.c IB/mthca: Fix driver when sizeof (phys_addr_t) > sizeof (long) 2011-01-11 20:39:47 -08:00
mthca_cmd.h
mthca_config_reg.h IB/mthca: Remove unnecessary include of <asm/page.h> 2009-09-05 20:36:13 -07:00
mthca_cq.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mthca_dev.h IB/mthca: Don't allow userspace open while recovering from catastrophic error 2009-09-05 20:36:16 -07:00
mthca_doorbell.h
mthca_eq.c IB/mthca: Fix driver when sizeof (phys_addr_t) > sizeof (long) 2011-01-11 20:39:47 -08:00
mthca_mad.c IB/mthca: Handle -ENOMEM in forward_trap() 2011-01-10 17:42:10 -08:00
mthca_main.c IB: Increase DMA max_segment_size on Mellanox hardware 2011-03-22 09:39:18 -07:00
mthca_mcg.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mthca_memfree.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
mthca_memfree.h
mthca_mr.c IB/mthca: Fix driver when sizeof (phys_addr_t) > sizeof (long) 2011-01-11 20:39:47 -08:00
mthca_pd.c
mthca_profile.c IB/mthca: Add module parameter for number of MTTs per segment 2009-05-27 14:36:16 -07:00
mthca_profile.h
mthca_provider.c IB/core: Allow device-specific per-port sysfs files 2010-05-21 10:34:44 -07:00
mthca_provider.h IB/mthca: Use the dma state API instead of pci equivalents 2010-04-21 15:25:34 -07:00
mthca_qp.c IB/core: Add VLAN support for IBoE 2010-10-25 10:20:39 -07:00
mthca_reset.c IB/mthca: Remove unnecessary include of <linux/init.h> 2009-09-05 20:36:15 -07:00
mthca_srq.c
mthca_uar.c
mthca_user.h
mthca_wqe.h