IB/hfi1, qib, rdmavt: Move two IB event functions into rdmavt
Add rvt_rc_error() and rvt_comm_est() as shared functions in rdmavt, moved from hfi1/qib logic. Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Brian Welty <brian.welty@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
Этот коммит содержится в:

коммит произвёл
Doug Ledford

родитель
c03c08d50b
Коммит
beb5a04267
@@ -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:
|
||||
|
@@ -621,7 +621,7 @@ acc_err:
|
||||
wc.status = IB_WC_LOC_PROT_ERR;
|
||||
err:
|
||||
/* responder goes to error state */
|
||||
qib_rc_error(qp, wc.status);
|
||||
rvt_rc_error(qp, wc.status);
|
||||
|
||||
serr:
|
||||
spin_lock_irqsave(&sqp->s_lock, flags);
|
||||
|
@@ -325,17 +325,8 @@ inv:
|
||||
goto inv;
|
||||
}
|
||||
|
||||
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) {
|
||||
@@ -527,7 +518,7 @@ drop:
|
||||
return;
|
||||
|
||||
op_err:
|
||||
qib_rc_error(qp, IB_WC_LOC_QP_OP_ERR);
|
||||
rvt_rc_error(qp, IB_WC_LOC_QP_OP_ERR);
|
||||
return;
|
||||
|
||||
}
|
||||
|
@@ -152,7 +152,7 @@ static void qib_ud_loopback(struct rvt_qp *sqp, struct rvt_swqe *swqe)
|
||||
|
||||
ret = qib_get_rwqe(qp, 0);
|
||||
if (ret < 0) {
|
||||
qib_rc_error(qp, IB_WC_LOC_QP_OP_ERR);
|
||||
rvt_rc_error(qp, IB_WC_LOC_QP_OP_ERR);
|
||||
goto bail_unlock;
|
||||
}
|
||||
if (!ret) {
|
||||
@@ -548,7 +548,7 @@ void qib_ud_rcv(struct qib_ibport *ibp, struct ib_header *hdr,
|
||||
|
||||
ret = qib_get_rwqe(qp, 0);
|
||||
if (ret < 0) {
|
||||
qib_rc_error(qp, IB_WC_LOC_QP_OP_ERR);
|
||||
rvt_rc_error(qp, IB_WC_LOC_QP_OP_ERR);
|
||||
return;
|
||||
}
|
||||
if (!ret) {
|
||||
|
@@ -326,8 +326,6 @@ void qib_rc_rnr_retry(unsigned long arg);
|
||||
|
||||
void qib_rc_send_complete(struct rvt_qp *qp, struct ib_header *hdr);
|
||||
|
||||
void qib_rc_error(struct rvt_qp *qp, enum ib_wc_status err);
|
||||
|
||||
int qib_post_ud_send(struct rvt_qp *qp, struct ib_send_wr *wr);
|
||||
|
||||
void qib_ud_rcv(struct qib_ibport *ibp, struct ib_header *hdr,
|
||||
|
Ссылка в новой задаче
Block a user