Messages in this thread Patch in this message | | | From | Joachim Fenkes <> | Subject | [PATCH] IB/ehca: Reject recv WRs if QP is in RESET state | Date | Mon, 9 Jun 2008 13:24:20 +0200 |
| |
Signed-off-by: Joachim Fenkes <fenkes@de.ibm.com> --- On Friday 06 June 2008 22:20, Dotan Barak wrote:
> I checked the code in the ehca driver and noticed that > post RR to a QP is being accepted in any state (including the RESET state).
You're right, this is only consistent -- thanks for pointing it out!
Regards, Joachim
drivers/infiniband/hw/ehca/ehca_reqs.c | 12 ++++++++++-- 1 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/infiniband/hw/ehca/ehca_reqs.c b/drivers/infiniband/hw/ehca/ehca_reqs.c index f093b00..ad197f4 100644 --- a/drivers/infiniband/hw/ehca/ehca_reqs.c +++ b/drivers/infiniband/hw/ehca/ehca_reqs.c @@ -544,8 +544,16 @@ int ehca_post_recv(struct ib_qp *qp, struct ib_recv_wr *recv_wr, struct ib_recv_wr **bad_recv_wr) { - return internal_post_recv(container_of(qp, struct ehca_qp, ib_qp), - qp->device, recv_wr, bad_recv_wr); + struct ehca_qp *my_qp = container_of(qp, struct ehca_qp, ib_qp); + + /* Reject WR if QP is in RESET state */ + if (unlikely(my_qp->state == IB_QPS_RESET)) { + ehca_err(qp->device, "Invalid QP state qp_state=%d qpn=%x", + my_qp->state, qp->qp_num); + return -EINVAL; + } + + return internal_post_recv(my_qp, qp->device, recv_wr, bad_recv_wr); } int ehca_post_srq_recv(struct ib_srq *srq, -- 1.5.5
| |