aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband/sw/rdmavt/vt.c
diff options
context:
space:
mode:
authorDennis Dalessandro <dennis.dalessandro@intel.com>2016-01-22 13:00:15 -0800
committerDoug Ledford <dledford@redhat.com>2016-03-10 20:37:24 -0500
commit6f6387ae75c1499b315ddcd3c74402d44423e1cc (patch)
tree66777d29ff37276127929b233a6428e485ce3b0f /drivers/infiniband/sw/rdmavt/vt.c
parentIB/qib: Remove create qp and create qp table functionality (diff)
downloadlinux-dev-6f6387ae75c1499b315ddcd3c74402d44423e1cc.tar.xz
linux-dev-6f6387ae75c1499b315ddcd3c74402d44423e1cc.zip
IB/rdmavt: Add completion queue functions
Brings in completion queue functionality. A kthread worker is added to the rvt_dev_info to serve as a worker for completion queues. Reviewed-by: Mike Marciniszyn <mike.marciniszyn@intel.com> Reviewed-by: Harish Chegondi <harish.chegondi@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
Diffstat (limited to 'drivers/infiniband/sw/rdmavt/vt.c')
-rw-r--r--drivers/infiniband/sw/rdmavt/vt.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/drivers/infiniband/sw/rdmavt/vt.c b/drivers/infiniband/sw/rdmavt/vt.c
index f2b643843374..136cc212caa5 100644
--- a/drivers/infiniband/sw/rdmavt/vt.c
+++ b/drivers/infiniband/sw/rdmavt/vt.c
@@ -324,6 +324,11 @@ int rvt_register_device(struct rvt_dev_info *rdi)
CHECK_DRIVER_OVERRIDE(rdi, mmap);
/* Completion queues */
+ ret = rvt_driver_cq_init(rdi);
+ if (ret) {
+ pr_err("Error in driver CQ init.\n");
+ goto bail_mr;
+ }
CHECK_DRIVER_OVERRIDE(rdi, create_cq);
CHECK_DRIVER_OVERRIDE(rdi, destroy_cq);
CHECK_DRIVER_OVERRIDE(rdi, poll_cq);
@@ -344,12 +349,15 @@ int rvt_register_device(struct rvt_dev_info *rdi)
ret = ib_register_device(&rdi->ibdev, rdi->driver_f.port_callback);
if (ret) {
rvt_pr_err(rdi, "Failed to register driver with ib core.\n");
- goto bail_mr;
+ goto bail_cq;
}
rvt_pr_info(rdi, "Registration with rdmavt done.\n");
return ret;
+bail_cq:
+ rvt_cq_exit(rdi);
+
bail_mr:
rvt_mr_exit(rdi);
@@ -366,6 +374,7 @@ void rvt_unregister_device(struct rvt_dev_info *rdi)
return;
ib_unregister_device(&rdi->ibdev);
+ rvt_cq_exit(rdi);
rvt_mr_exit(rdi);
rvt_qp_exit(rdi);
}