[openib-general] [PATCH][1/5] ib_get_dma_mr(): core
Roland Dreier
Wed Oct 20 16:04:44 PDT 2004
Index: infiniband/include/ib_verbs.h
===================================================================
--- infiniband/include/ib_verbs.h (revision 1024)
+++ infiniband/include/ib_verbs.h (working copy)
@@ -736,6 +736,8 @@
enum ib_cq_notify cq_notify);
int (*req_ncomp_notif)(struct ib_cq *cq,
int wc_cnt);
+ struct ib_mr * (*get_dma_mr)(struct ib_pd *pd,
+ int mr_access_flags);
struct ib_mr * (*reg_phys_mr)(struct ib_pd *pd,
struct ib_phys_buf *phys_buf_array,
int num_phys_buf,
@@ -924,6 +926,8 @@
-ENOSYS;
}
+struct ib_mr *ib_get_dma_mr(struct ib_pd *pd, int mr_access_flags);
+
struct ib_mr *ib_reg_phys_mr(struct ib_pd *pd,
struct ib_phys_buf *phys_buf_array,
int num_phys_buf,
Index: infiniband/core/ib_verbs.c
===================================================================
--- infiniband/core/ib_verbs.c (revision 915)
+++ infiniband/core/ib_verbs.c (working copy)
@@ -226,6 +226,23 @@
/* Memory regions */
+struct ib_mr *ib_get_dma_mr(struct ib_pd *pd, int mr_access_flags)
+{
+ struct ib_mr *mr;
+
+ mr = pd->device->get_dma_mr(pd, mr_access_flags);
+
+ if (!IS_ERR(mr)) {
+ mr->device = pd->device;
+ mr->pd = pd;
+ atomic_inc(&pd->usecnt);
+ atomic_set(&mr->usecnt, 0);
+ }
+
+ return mr;
+}
+EXPORT_SYMBOL(ib_get_dma_mr);
+
struct ib_mr *ib_reg_phys_mr(struct ib_pd *pd,
struct ib_phys_buf *phys_buf_array,
int num_phys_buf,
More information about the openib-general mailing list