IB/rdmavt: Add IB user context allocation and de-alloction functions
authorHarish Chegondi <harish.chegondi@intel.com>
Fri, 22 Jan 2016 20:50:05 +0000 (12:50 -0800)
committerDoug Ledford <dledford@redhat.com>
Fri, 11 Mar 2016 01:37:19 +0000 (20:37 -0500)
Adding IB user context alloc and dealloc functions to rdmavt so that the
drivers that use rdmavt can use these functions instead of defining their
own functions.

Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Harish Chegondi <harish.chegondi@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
drivers/infiniband/sw/rdmavt/vt.c

index 18b5f43e682452552fb7bac577aa2c2def64771e..df2df361c34289cf08b460d8de087961036a1880 100644 (file)
@@ -189,6 +189,16 @@ static int rvt_query_gid(struct ib_device *ibdev, u8 port,
        return -EOPNOTSUPP;
 }
 
+struct rvt_ucontext {
+       struct ib_ucontext ibucontext;
+};
+
+static inline struct rvt_ucontext *to_iucontext(struct ib_ucontext
+                                               *ibucontext)
+{
+       return container_of(ibucontext, struct rvt_ucontext, ibucontext);
+}
+
 /**
  * rvt_alloc_ucontext - Allocate a user context
  * @ibdev: Vers IB dev
@@ -197,7 +207,12 @@ static int rvt_query_gid(struct ib_device *ibdev, u8 port,
 static struct ib_ucontext *rvt_alloc_ucontext(struct ib_device *ibdev,
                                              struct ib_udata *udata)
 {
-       return ERR_PTR(-EOPNOTSUPP);
+       struct rvt_ucontext *context;
+
+       context = kmalloc(sizeof(*context), GFP_KERNEL);
+       if (!context)
+               return ERR_PTR(-ENOMEM);
+       return &context->ibucontext;
 }
 
 /**
@@ -206,7 +221,8 @@ static struct ib_ucontext *rvt_alloc_ucontext(struct ib_device *ibdev,
  */
 static int rvt_dealloc_ucontext(struct ib_ucontext *context)
 {
-       return -EOPNOTSUPP;
+       kfree(to_iucontext(context));
+       return 0;
 }
 
 static int rvt_get_port_immutable(struct ib_device *ibdev, u8 port_num,