RDMA/cxgb4: Only insert sq qid in lookup table
authorSteve Wise <swise@opengridcomputing.com>
Thu, 20 May 2010 21:58:21 +0000 (16:58 -0500)
committerRoland Dreier <rolandd@cisco.com>
Tue, 25 May 2010 04:08:05 +0000 (21:08 -0700)
Signed-off-by: Steve Wise <swise@opengridcomputing.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/cxgb4/qp.c

index a41881b15e6deff08257836b5649d27bb9743c67..0c28ed1eafa65236ef87e6b937d0ea77e46d1c5d 100644 (file)
@@ -1345,7 +1345,6 @@ int c4iw_destroy_qp(struct ib_qp *ib_qp)
        wait_event(qhp->wait, !qhp->ep);
 
        remove_handle(rhp, &rhp->qpidr, qhp->wq.sq.qid);
-       remove_handle(rhp, &rhp->qpidr, qhp->wq.rq.qid);
        atomic_dec(&qhp->refcnt);
        wait_event(qhp->wait, !atomic_read(&qhp->refcnt));
 
@@ -1448,30 +1447,26 @@ struct ib_qp *c4iw_create_qp(struct ib_pd *pd, struct ib_qp_init_attr *attrs,
        if (ret)
                goto err2;
 
-       ret = insert_handle(rhp, &rhp->qpidr, qhp, qhp->wq.rq.qid);
-       if (ret)
-               goto err3;
-
        if (udata) {
                mm1 = kmalloc(sizeof *mm1, GFP_KERNEL);
                if (!mm1) {
                        ret = -ENOMEM;
-                       goto err4;
+                       goto err3;
                }
                mm2 = kmalloc(sizeof *mm2, GFP_KERNEL);
                if (!mm2) {
                        ret = -ENOMEM;
-                       goto err5;
+                       goto err4;
                }
                mm3 = kmalloc(sizeof *mm3, GFP_KERNEL);
                if (!mm3) {
                        ret = -ENOMEM;
-                       goto err6;
+                       goto err5;
                }
                mm4 = kmalloc(sizeof *mm4, GFP_KERNEL);
                if (!mm4) {
                        ret = -ENOMEM;
-                       goto err7;
+                       goto err6;
                }
 
                uresp.qid_mask = rhp->rdev.qpmask;
@@ -1493,7 +1488,7 @@ struct ib_qp *c4iw_create_qp(struct ib_pd *pd, struct ib_qp_init_attr *attrs,
                spin_unlock(&ucontext->mmap_lock);
                ret = ib_copy_to_udata(udata, &uresp, sizeof uresp);
                if (ret)
-                       goto err8;
+                       goto err7;
                mm1->key = uresp.sq_key;
                mm1->addr = virt_to_phys(qhp->wq.sq.queue);
                mm1->len = PAGE_ALIGN(qhp->wq.sq.memsize);
@@ -1517,16 +1512,14 @@ struct ib_qp *c4iw_create_qp(struct ib_pd *pd, struct ib_qp_init_attr *attrs,
             __func__, qhp, qhp->attr.sq_num_entries, qhp->attr.rq_num_entries,
             qhp->wq.sq.qid);
        return &qhp->ibqp;
-err8:
-       kfree(mm4);
 err7:
-       kfree(mm3);
+       kfree(mm4);
 err6:
-       kfree(mm2);
+       kfree(mm3);
 err5:
-       kfree(mm1);
+       kfree(mm2);
 err4:
-       remove_handle(rhp, &rhp->qpidr, qhp->wq.rq.qid);
+       kfree(mm1);
 err3:
        remove_handle(rhp, &rhp->qpidr, qhp->wq.sq.qid);
 err2: