[openib-general] [PATCH] [2/2] change QP state to SQE
Sean Hefty
mshefty at ichips.intel.com
Thu Nov 11 17:45:22 PST 2004
This should transition the QP state to SQE when encountering a
send error on the CQ. There may be a better way of doing this;
I didn't spend a lot of time studying the code.
- Sean
Index: mthca_dev.h
===================================================================
--- mthca_dev.h (revision 1209)
+++ mthca_dev.h (working copy)
@@ -311,6 +311,7 @@
void mthca_qp_event(struct mthca_dev *dev, u32 qpn,
enum ib_event_type event_type);
+void mthca_qp_send_error(struct mthca_qp *qp);
int mthca_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, int attr_mask);
int mthca_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr,
struct ib_send_wr **bad_wr);
Index: mthca_cq.c
===================================================================
--- mthca_cq.c (revision 1209)
+++ mthca_cq.c (working copy)
@@ -330,6 +330,9 @@
break;
}
+ if (cqe->syndrome != SYNDROME_WR_FLUSH_ERR && is_send)
+ mthca_qp_send_error(qp);
+
err = mthca_free_err_wqe(qp, is_send, wqe_index, &dbd, &new_wqe);
if (err)
return err;
Index: mthca_qp.c
===================================================================
--- mthca_qp.c (revision 1209)
+++ mthca_qp.c (working copy)
@@ -288,6 +288,12 @@
wake_up(&qp->wait);
}
+void mthca_qp_send_error(struct mthca_qp *qp)
+{
+ if (qp->state == IB_QPS_RTS)
+ qp->state = IB_QPS_SQE;
+}
+
static int to_mthca_state(enum ib_qp_state ib_state)
{
switch (ib_state) {
More information about the general
mailing list