diff options
author | Roland Dreier <rolandd@cisco.com> | 2007-04-24 19:31:11 -0400 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2007-04-24 19:31:11 -0400 |
commit | 30c00986f3a610cdcee2602b8254c3ffa6cddc04 (patch) | |
tree | 442b609d7375ca504992169060ba5897d8cbb06f /drivers/infiniband | |
parent | 532c3b581725e2c6480a20c845fff920690286f1 (diff) |
IB/mthca: Simplify CQ cleaning in mthca_free_qp()
mthca_free_qp() already has local variables to hold the QP's send_cq
and recv_cq, so we can slightly clean up the calls to mthca_cq_clean()
by using those local variables instead of expressions like
to_mcq(qp->ibqp.send_cq).
Also, by cleaning the recv_cq first, we can avoid worrying about
whether the QP is attached to an SRQ for the second call, because we
would only clean send_cq if send_cq is not equal to recv_cq, and that
means send_cq cannot have any receive completions from the QP being
destroyed.
All this work even improves the generated code a bit:
add/remove: 0/0 grow/shrink: 0/1 up/down: 0/-5 (-5)
function old new delta
mthca_free_qp 510 505 -5
Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r-- | drivers/infiniband/hw/mthca/mthca_qp.c | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/drivers/infiniband/hw/mthca/mthca_qp.c b/drivers/infiniband/hw/mthca/mthca_qp.c index 1c6b63aca268..8fe6fee7a97a 100644 --- a/drivers/infiniband/hw/mthca/mthca_qp.c +++ b/drivers/infiniband/hw/mthca/mthca_qp.c | |||
@@ -1419,11 +1419,10 @@ void mthca_free_qp(struct mthca_dev *dev, | |||
1419 | * unref the mem-free tables and free the QPN in our table. | 1419 | * unref the mem-free tables and free the QPN in our table. |
1420 | */ | 1420 | */ |
1421 | if (!qp->ibqp.uobject) { | 1421 | if (!qp->ibqp.uobject) { |
1422 | mthca_cq_clean(dev, to_mcq(qp->ibqp.send_cq), qp->qpn, | 1422 | mthca_cq_clean(dev, recv_cq, qp->qpn, |
1423 | qp->ibqp.srq ? to_msrq(qp->ibqp.srq) : NULL); | 1423 | qp->ibqp.srq ? to_msrq(qp->ibqp.srq) : NULL); |
1424 | if (qp->ibqp.send_cq != qp->ibqp.recv_cq) | 1424 | if (send_cq != recv_cq) |
1425 | mthca_cq_clean(dev, to_mcq(qp->ibqp.recv_cq), qp->qpn, | 1425 | mthca_cq_clean(dev, send_cq, qp->qpn, NULL); |
1426 | qp->ibqp.srq ? to_msrq(qp->ibqp.srq) : NULL); | ||
1427 | 1426 | ||
1428 | mthca_free_memfree(dev, qp); | 1427 | mthca_free_memfree(dev, qp); |
1429 | mthca_free_wqe_buf(dev, qp); | 1428 | mthca_free_wqe_buf(dev, qp); |