Skip to content

Commit

Permalink
RDMA/qedr: enhance destroy flow for GSI QP
Browse files Browse the repository at this point in the history
Avoid attempting to release irrelevant (and unused) resources for GSI QP.

Signed-off-by: Ram Amrani <Ram.Amrani@cavium.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
  • Loading branch information
Amrani, Ram authored and Doug Ledford committed Apr 28, 2017
1 parent f92faab commit 942b3b2
Showing 1 changed file with 11 additions and 10 deletions.
21 changes: 11 additions & 10 deletions drivers/infiniband/hw/qedr/verbs.c
Original file line number Diff line number Diff line change
Expand Up @@ -993,26 +993,27 @@ int qedr_destroy_cq(struct ib_cq *ibcq)
struct qed_rdma_destroy_cq_out_params oparams;
struct qed_rdma_destroy_cq_in_params iparams;
struct qedr_cq *cq = get_qedr_cq(ibcq);
int rc;

DP_DEBUG(dev, QEDR_MSG_CQ, "destroy cq: cq_id %d", cq->icid);
DP_DEBUG(dev, QEDR_MSG_CQ, "destroy cq %p (icid=%d)\n", cq, cq->icid);

/* GSIs CQs are handled by driver, so they don't exist in the FW */
if (cq->cq_type != QEDR_CQ_TYPE_GSI) {
int rc;
if (cq->cq_type == QEDR_CQ_TYPE_GSI)
goto done;

iparams.icid = cq->icid;
rc = dev->ops->rdma_destroy_cq(dev->rdma_ctx, &iparams,
&oparams);
if (rc)
return rc;
dev->ops->common->chain_free(dev->cdev, &cq->pbl);
}
iparams.icid = cq->icid;
rc = dev->ops->rdma_destroy_cq(dev->rdma_ctx, &iparams, &oparams);
if (rc)
return rc;

dev->ops->common->chain_free(dev->cdev, &cq->pbl);

if (ibcq->uobject && ibcq->uobject->context) {
qedr_free_pbl(dev, &cq->q.pbl_info, cq->q.pbl_tbl);
ib_umem_release(cq->q.umem);
}

done:
kfree(cq);

return 0;
Expand Down

0 comments on commit 942b3b2

Please sign in to comment.