Index: infiniband/core/mad_ib.c =================================================================== --- infiniband/core/mad_ib.c (revision 915) +++ infiniband/core/mad_ib.c (working copy) @@ -59,7 +59,7 @@ mad, IB_MAD_PACKET_SIZE, PCI_DMA_TODEVICE); gather_list.length = IB_MAD_PACKET_SIZE; - gather_list.lkey = priv->lkey; + gather_list.lkey = priv->mr->lkey; send_param.next = NULL; send_param.opcode = IB_WR_SEND; @@ -303,7 +303,7 @@ buf, IB_MAD_BUFFER_SIZE, PCI_DMA_FROMDEVICE); scatter_list.length = IB_MAD_BUFFER_SIZE; - scatter_list.lkey = priv->lkey; + scatter_list.lkey = priv->mr->lkey; receive_param.next = NULL; receive_param.sg_list = &scatter_list; Index: infiniband/core/mad_main.c =================================================================== --- infiniband/core/mad_main.c (revision 915) +++ infiniband/core/mad_main.c (working copy) @@ -42,31 +42,6 @@ kmem_cache_t *mad_cache; -static inline int ib_mad_register_memory(struct ib_pd *pd, - struct ib_mr **mr, - u32 *lkey) -{ - u64 iova = 0; - struct ib_phys_buf buffer_list = { - .addr = 0, - .size = (unsigned long) high_memory - PAGE_OFFSET - }; - - *mr = ib_reg_phys_mr(pd, &buffer_list, 1, /* list_len */ - IB_ACCESS_LOCAL_WRITE, &iova); - if (IS_ERR(*mr)) { - printk(KERN_WARNING "ib_reg_phys_mr failed " - "size 0x%016llx, iova 0x%016llx " - "(return code %ld)\n", - (unsigned long long) buffer_list.size, - (unsigned long long) iova, PTR_ERR(*mr)); - return PTR_ERR(*mr); - } - - *lkey = (*mr)->lkey; - return 0; -} - static int ib_mad_qp_create(struct ib_device *device, tTS_IB_PORT port, u32 qpn) @@ -197,8 +172,9 @@ INIT_WORK(&priv->cq_work, ib_mad_drain_cq, device); - if (ib_mad_register_memory(priv->pd, &priv->mr, &priv->lkey)) { - printk(KERN_WARNING "Failed to allocate MAD MR for %s\n", + priv->mr = ib_get_dma_mr(priv->pd, IB_ACCESS_LOCAL_WRITE); + if (IS_ERR(priv->mr)) { + printk(KERN_WARNING "Failed to create DMA MR for %s\n", device->name); goto error_free_cq; } Index: infiniband/core/mad_priv.h =================================================================== --- infiniband/core/mad_priv.h (revision 915) +++ infiniband/core/mad_priv.h (working copy) @@ -59,7 +59,6 @@ struct ib_pd *pd; struct ib_cq *cq; struct ib_mr *mr; - u32 lkey; struct ib_qp *qp[IB_MAD_MAX_PORTS_PER_DEVICE + 1][2]; struct ib_mad_buf send_buf [IB_MAD_MAX_PORTS_PER_DEVICE + 1][2][IB_MAD_SENDS_PER_QP];
_______________________________________________ openib-general mailing list [EMAIL PROTECTED] http://openib.org/mailman/listinfo/openib-general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general