Message ID | 20140328172647.23646.58499.stgit@phlsvslse11.ph.intel.com (mailing list archive) |
---|---|
State | Superseded, archived |
Headers | show |
Le vendredi 28 mars 2014 à 13:26 -0400, Mike Marciniszyn a écrit : > 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. > And struct ipath_dma_mapping_ops was converted to C99 initializer. > Suggested-by: Bart Van Assche <bvanassche@acm.org> > Cc: Bart Van Assche <bvanassche@acm.org> > Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com> > Signed-off-by: Mike Marciniszyn <mike.marciniszyn@intel.com> > --- > 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 majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe linux-rdma" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> And struct ipath_dma_mapping_ops was converted to C99 initializer. > This is now mentioned in the ipath patch.
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 };