RDMA/ocrdma: Remove driver QP state machine
Remove QP state machine in ocrdma low-level driver and use on the core IB stack's instead. Signed-off-by: Naresh Gottumukkala <bgottumukkala@emulex.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
9c58726ba9
commit
057729cb23
|
@ -654,7 +654,7 @@ static void ocrdma_process_qpcat_error(struct ocrdma_dev *dev,
|
|||
|
||||
if (qp == NULL)
|
||||
BUG();
|
||||
ocrdma_qp_state_machine(qp, new_ib_qps, &old_ib_qps);
|
||||
ocrdma_qp_state_change(qp, new_ib_qps, &old_ib_qps);
|
||||
}
|
||||
|
||||
static void ocrdma_dispatch_ibevent(struct ocrdma_dev *dev,
|
||||
|
@ -1676,8 +1676,8 @@ void ocrdma_flush_qp(struct ocrdma_qp *qp)
|
|||
spin_unlock_irqrestore(&qp->dev->flush_q_lock, flags);
|
||||
}
|
||||
|
||||
int ocrdma_qp_state_machine(struct ocrdma_qp *qp, enum ib_qp_state new_ib_state,
|
||||
enum ib_qp_state *old_ib_state)
|
||||
int ocrdma_qp_state_change(struct ocrdma_qp *qp, enum ib_qp_state new_ib_state,
|
||||
enum ib_qp_state *old_ib_state)
|
||||
{
|
||||
unsigned long flags;
|
||||
int status = 0;
|
||||
|
@ -1694,96 +1694,11 @@ int ocrdma_qp_state_machine(struct ocrdma_qp *qp, enum ib_qp_state new_ib_state,
|
|||
return 1;
|
||||
}
|
||||
|
||||
switch (qp->state) {
|
||||
case OCRDMA_QPS_RST:
|
||||
switch (new_state) {
|
||||
case OCRDMA_QPS_RST:
|
||||
case OCRDMA_QPS_INIT:
|
||||
break;
|
||||
default:
|
||||
status = -EINVAL;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case OCRDMA_QPS_INIT:
|
||||
/* qps: INIT->XXX */
|
||||
switch (new_state) {
|
||||
case OCRDMA_QPS_INIT:
|
||||
case OCRDMA_QPS_RTR:
|
||||
break;
|
||||
case OCRDMA_QPS_ERR:
|
||||
ocrdma_flush_qp(qp);
|
||||
break;
|
||||
default:
|
||||
status = -EINVAL;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case OCRDMA_QPS_RTR:
|
||||
/* qps: RTS->XXX */
|
||||
switch (new_state) {
|
||||
case OCRDMA_QPS_RTS:
|
||||
break;
|
||||
case OCRDMA_QPS_ERR:
|
||||
ocrdma_flush_qp(qp);
|
||||
break;
|
||||
default:
|
||||
status = -EINVAL;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case OCRDMA_QPS_RTS:
|
||||
/* qps: RTS->XXX */
|
||||
switch (new_state) {
|
||||
case OCRDMA_QPS_SQD:
|
||||
case OCRDMA_QPS_SQE:
|
||||
break;
|
||||
case OCRDMA_QPS_ERR:
|
||||
ocrdma_flush_qp(qp);
|
||||
break;
|
||||
default:
|
||||
status = -EINVAL;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case OCRDMA_QPS_SQD:
|
||||
/* qps: SQD->XXX */
|
||||
switch (new_state) {
|
||||
case OCRDMA_QPS_RTS:
|
||||
case OCRDMA_QPS_SQE:
|
||||
case OCRDMA_QPS_ERR:
|
||||
break;
|
||||
default:
|
||||
status = -EINVAL;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case OCRDMA_QPS_SQE:
|
||||
switch (new_state) {
|
||||
case OCRDMA_QPS_RTS:
|
||||
case OCRDMA_QPS_ERR:
|
||||
break;
|
||||
default:
|
||||
status = -EINVAL;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
case OCRDMA_QPS_ERR:
|
||||
/* qps: ERR->XXX */
|
||||
switch (new_state) {
|
||||
case OCRDMA_QPS_RST:
|
||||
break;
|
||||
default:
|
||||
status = -EINVAL;
|
||||
break;
|
||||
};
|
||||
break;
|
||||
default:
|
||||
status = -EINVAL;
|
||||
break;
|
||||
};
|
||||
if (!status)
|
||||
qp->state = new_state;
|
||||
|
||||
if (new_state == OCRDMA_QPS_ERR)
|
||||
ocrdma_flush_qp(qp);
|
||||
|
||||
qp->state = new_state;
|
||||
|
||||
spin_unlock_irqrestore(&qp->q_lock, flags);
|
||||
return status;
|
||||
|
|
|
@ -122,7 +122,7 @@ int ocrdma_mbx_destroy_srq(struct ocrdma_dev *, struct ocrdma_srq *);
|
|||
int ocrdma_alloc_av(struct ocrdma_dev *, struct ocrdma_ah *);
|
||||
int ocrdma_free_av(struct ocrdma_dev *, struct ocrdma_ah *);
|
||||
|
||||
int ocrdma_qp_state_machine(struct ocrdma_qp *, enum ib_qp_state new_state,
|
||||
int ocrdma_qp_state_change(struct ocrdma_qp *, enum ib_qp_state new_state,
|
||||
enum ib_qp_state *old_ib_state);
|
||||
bool ocrdma_is_qp_in_sq_flushlist(struct ocrdma_cq *, struct ocrdma_qp *);
|
||||
bool ocrdma_is_qp_in_rq_flushlist(struct ocrdma_cq *, struct ocrdma_qp *);
|
||||
|
|
|
@ -1101,7 +1101,7 @@ int _ocrdma_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
|
|||
qp = get_ocrdma_qp(ibqp);
|
||||
dev = qp->dev;
|
||||
if (attr_mask & IB_QP_STATE)
|
||||
status = ocrdma_qp_state_machine(qp, attr->qp_state, &old_qps);
|
||||
status = ocrdma_qp_state_change(qp, attr->qp_state, &old_qps);
|
||||
/* if new and previous states are same hw doesn't need to
|
||||
* know about it.
|
||||
*/
|
||||
|
@ -2106,7 +2106,7 @@ static bool ocrdma_update_err_cqe(struct ib_wc *ibwc, struct ocrdma_cqe *cqe,
|
|||
ibwc->status = ocrdma_to_ibwc_err(status);
|
||||
|
||||
ocrdma_flush_qp(qp);
|
||||
ocrdma_qp_state_machine(qp, IB_QPS_ERR, NULL);
|
||||
ocrdma_qp_state_change(qp, IB_QPS_ERR, NULL);
|
||||
|
||||
/* if wqe/rqe pending for which cqe needs to be returned,
|
||||
* trigger inflating it.
|
||||
|
|
Loading…
Reference in New Issue