The lack of these methods is compensated for by code changes
to .map_sg to insure that the vanilla sg_dma_address() and
sg_dma_len() will do the same thing as the equivalent
former ib_sg_dma_address() and ib_sg_dma_len() calls
into the drivers.

The introduction of this patch required that the struct
ipath_dma_mapping_ops be converted to C99 initializer.

Suggested-by: Bart Van Assche <[email protected]>
Cc: Bart Van Assche <[email protected]>
Reviewed-by: Dennis Dalessandro <[email protected]>
Signed-off-by: Mike Marciniszyn <[email protected]>
---
 drivers/infiniband/hw/ipath/ipath_dma.c |   43 +++++++++++--------------------
 1 file changed, 15 insertions(+), 28 deletions(-)

diff --git a/drivers/infiniband/hw/ipath/ipath_dma.c 
b/drivers/infiniband/hw/ipath/ipath_dma.c
index 644c2c7..123a8c0 100644
--- a/drivers/infiniband/hw/ipath/ipath_dma.c
+++ b/drivers/infiniband/hw/ipath/ipath_dma.c
@@ -115,6 +115,10 @@ static int ipath_map_sg(struct ib_device *dev, struct 
scatterlist *sgl,
                        ret = 0;
                        break;
                }
+               sg->dma_address = addr + sg->offset;
+#ifdef CONFIG_NEED_SG_DMA_LENGTH
+               sg->dma_length = sg->length;
+#endif
        }
        return ret;
 }
@@ -126,21 +130,6 @@ static void ipath_unmap_sg(struct ib_device *dev,
        BUG_ON(!valid_dma_direction(direction));
 }
 
-static u64 ipath_sg_dma_address(struct ib_device *dev, struct scatterlist *sg)
-{
-       u64 addr = (u64) page_address(sg_page(sg));
-
-       if (addr)
-               addr += sg->offset;
-       return addr;
-}
-
-static unsigned int ipath_sg_dma_len(struct ib_device *dev,
-                                    struct scatterlist *sg)
-{
-       return sg->length;
-}
-
 static void ipath_sync_single_for_cpu(struct ib_device *dev,
                                      u64 addr,
                                      size_t size,
@@ -176,17 +165,15 @@ static void ipath_dma_free_coherent(struct ib_device 
*dev, size_t size,
 }
 
 struct ib_dma_mapping_ops ipath_dma_mapping_ops = {
-       ipath_mapping_error,
-       ipath_dma_map_single,
-       ipath_dma_unmap_single,
-       ipath_dma_map_page,
-       ipath_dma_unmap_page,
-       ipath_map_sg,
-       ipath_unmap_sg,
-       ipath_sg_dma_address,
-       ipath_sg_dma_len,
-       ipath_sync_single_for_cpu,
-       ipath_sync_single_for_device,
-       ipath_dma_alloc_coherent,
-       ipath_dma_free_coherent
+       .mapping_error = ipath_mapping_error,
+       .map_single = ipath_dma_map_single,
+       .unmap_single = ipath_dma_unmap_single,
+       .map_page = ipath_dma_map_page,
+       .unmap_page = ipath_dma_unmap_page,
+       .map_sg = ipath_map_sg,
+       .unmap_sg = ipath_unmap_sg,
+       .sync_single_for_cpu = ipath_sync_single_for_cpu,
+       .sync_single_for_device = ipath_sync_single_for_device,
+       .alloc_coherent = ipath_dma_alloc_coherent,
+       .free_coherent = ipath_dma_free_coherent
 };

--
To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to