IB/ehca: Reject send WRs only for RESET, INIT and RTR state
authorJoachim Fenkes <fenkes@de.ibm.com>
Fri, 6 Jun 2008 18:21:33 +0000 (11:21 -0700)
committerRoland Dreier <rolandd@cisco.com>
Fri, 6 Jun 2008 18:21:33 +0000 (11:21 -0700)
Signed-off-by: Joachim Fenkes <fenkes@de.ibm.com>
Signed-off-by: Roland Dreier <rolandd@cisco.com>
drivers/infiniband/hw/ehca/ehca_reqs.c

index bbe0436f4f75a9b459c0d893deff27fa1e237e03..f093b0033dafff4cd7e3900d565980d44c35cb30 100644 (file)
@@ -421,8 +421,10 @@ int ehca_post_send(struct ib_qp *qp,
        int ret = 0;
        unsigned long flags;
 
-       if (unlikely(my_qp->state != IB_QPS_RTS)) {
-               ehca_err(qp->device, "QP not in RTS state  qpn=%x", qp->qp_num);
+       /* Reject WR if QP is in RESET, INIT or RTR state */
+       if (unlikely(my_qp->state < IB_QPS_RTS)) {
+               ehca_err(qp->device, "Invalid QP state  qp_state=%d qpn=%x",
+                        my_qp->state, qp->qp_num);
                return -EINVAL;
        }