|
@@ -1765,25 +1765,6 @@ send_ack:
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-void qib_rc_error(struct rvt_qp *qp, enum ib_wc_status err)
|
|
|
-{
|
|
|
- unsigned long flags;
|
|
|
- int lastwqe;
|
|
|
-
|
|
|
- spin_lock_irqsave(&qp->s_lock, flags);
|
|
|
- lastwqe = rvt_error_qp(qp, err);
|
|
|
- spin_unlock_irqrestore(&qp->s_lock, flags);
|
|
|
-
|
|
|
- if (lastwqe) {
|
|
|
- struct ib_event ev;
|
|
|
-
|
|
|
- ev.device = qp->ibqp.device;
|
|
|
- ev.element.qp = &qp->ibqp;
|
|
|
- ev.event = IB_EVENT_QP_LAST_WQE_REACHED;
|
|
|
- qp->ibqp.event_handler(&ev, qp->ibqp.qp_context);
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
static inline void qib_update_ack_queue(struct rvt_qp *qp, unsigned n)
|
|
|
{
|
|
|
unsigned next;
|
|
@@ -1895,17 +1876,8 @@ void qib_rc_rcv(struct qib_ctxtdata *rcd, struct ib_header *hdr,
|
|
|
break;
|
|
|
}
|
|
|
|
|
|
- if (qp->state == IB_QPS_RTR && !(qp->r_flags & RVT_R_COMM_EST)) {
|
|
|
- qp->r_flags |= RVT_R_COMM_EST;
|
|
|
- if (qp->ibqp.event_handler) {
|
|
|
- struct ib_event ev;
|
|
|
-
|
|
|
- ev.device = qp->ibqp.device;
|
|
|
- ev.element.qp = &qp->ibqp;
|
|
|
- ev.event = IB_EVENT_COMM_EST;
|
|
|
- qp->ibqp.event_handler(&ev, qp->ibqp.qp_context);
|
|
|
- }
|
|
|
- }
|
|
|
+ if (qp->state == IB_QPS_RTR && !(qp->r_flags & RVT_R_COMM_EST))
|
|
|
+ rvt_comm_est(qp);
|
|
|
|
|
|
/* OK, process the packet. */
|
|
|
switch (opcode) {
|
|
@@ -2197,7 +2169,7 @@ rnr_nak:
|
|
|
return;
|
|
|
|
|
|
nack_op_err:
|
|
|
- qib_rc_error(qp, IB_WC_LOC_QP_OP_ERR);
|
|
|
+ rvt_rc_error(qp, IB_WC_LOC_QP_OP_ERR);
|
|
|
qp->r_nak_state = IB_NAK_REMOTE_OPERATIONAL_ERROR;
|
|
|
qp->r_ack_psn = qp->r_psn;
|
|
|
/* Queue NAK for later */
|
|
@@ -2211,7 +2183,7 @@ nack_op_err:
|
|
|
nack_inv_unlck:
|
|
|
spin_unlock_irqrestore(&qp->s_lock, flags);
|
|
|
nack_inv:
|
|
|
- qib_rc_error(qp, IB_WC_LOC_QP_OP_ERR);
|
|
|
+ rvt_rc_error(qp, IB_WC_LOC_QP_OP_ERR);
|
|
|
qp->r_nak_state = IB_NAK_INVALID_REQUEST;
|
|
|
qp->r_ack_psn = qp->r_psn;
|
|
|
/* Queue NAK for later */
|
|
@@ -2225,7 +2197,7 @@ nack_inv:
|
|
|
nack_acc_unlck:
|
|
|
spin_unlock_irqrestore(&qp->s_lock, flags);
|
|
|
nack_acc:
|
|
|
- qib_rc_error(qp, IB_WC_LOC_PROT_ERR);
|
|
|
+ rvt_rc_error(qp, IB_WC_LOC_PROT_ERR);
|
|
|
qp->r_nak_state = IB_NAK_REMOTE_ACCESS_ERROR;
|
|
|
qp->r_ack_psn = qp->r_psn;
|
|
|
send_ack:
|