AC_MSG_NOTICE([adding $O2IB_SYMVER to Symbol Path O2IB])
EXTRA_SYMBOLS="$EXTRA_SYMBOLS $O2IB_SYMVER"
AC_SUBST(EXTRA_SYMBOLS)
+ EXTRA_OFED_INCLUDE="${EXTRA_OFED_INCLUDE} -DMLNX_OFED_BUILD"
fi
else
AC_MSG_ERROR([an external source tree was, either specified or detected, for o2iblnd however I could not find a $O2IBPATH/Module.symvers there])
#include <linux/module.h>
#include <linux/kernel.h>
+#if defined(MLNX_OFED_BUILD) && !defined(HAVE_SANE_IB_DMA_MAP_SG)
+#undef CONFIG_INFINIBAND_VIRT_DMA
+#endif
+
#if defined(NEED_LOCKDEP_IS_HELD_DISCARD_CONST) \
&& defined(CONFIG_LOCKDEP) \
&& defined(lockdep_is_held)
static inline
int kiblnd_dma_map_sg(struct kib_hca_dev *hdev, struct kib_tx *tx)
{
- struct ib_device *dev = hdev->ibh_ibdev;
struct scatterlist *sg = tx->tx_frags;
int nents = tx->tx_nfrags;
enum dma_data_direction direction = tx->tx_dmadir;
if (tx->tx_gpu)
- return lnet_rdma_map_sg_attrs(dev->dma_device, sg, nents,
- direction);
+ return lnet_rdma_map_sg_attrs(hdev->ibh_ibdev->dma_device,
+ sg, nents, direction);
-#ifdef HAVE_SANE_IB_DMA_MAP_SG
- return ib_dma_map_sg(dev, sg, nents, direction);
-#else
- #ifdef CONFIG_INFINIBAND_VIRT_DMA
- if (!dev->dma_device) {
- struct scatterlist *s;
- int i;
-
- /* NOTE: open coded ib_dma_virt_map_sg() */
- for_each_sg(sg, s, nents, i) {
- sg_dma_address(s) = (uintptr_t)sg_virt(s);
- sg_dma_len(s) = s->length;
- }
- return nents;
- }
- #endif
- return dma_map_sg_attrs(dev->dma_device, sg, nents, direction, 0);
-#endif
+ return ib_dma_map_sg(hdev->ibh_ibdev, sg, nents, direction);
}
static inline