Beispiel #1
0
/* called by the destroy qp verb */
void rxe_qp_destroy(struct rxe_qp *qp)
{
	struct rxe_dev *rxe = to_rdev(qp->ibqp.device);

	qp->valid = 0;
	qp->qp_timeout_jiffies = 0;
	rxe_cleanup_task(&qp->resp.task);

	del_timer_sync(&qp->retrans_timer);
	del_timer_sync(&qp->rnr_nak_timer);

	rxe_cleanup_task(&qp->req.task);
	if (qp_type(qp) == IB_QPT_RC)
		rxe_cleanup_task(&qp->comp.task);

	/* flush out any receive wr's or pending requests */
	__rxe_do_task(&qp->req.task);
	if (qp->sq.queue) {
		__rxe_do_task(&qp->comp.task);
		__rxe_do_task(&qp->req.task);
	}

	/* drain the output queue */
	while (!list_empty(&qp->arbiter_list))
		__rxe_do_task(&rxe->arbiter.task);
}
Beispiel #2
0
/* called by the destroy qp verb */
void rxe_qp_destroy(struct rxe_qp *qp)
{
	qp->valid = 0;
	qp->qp_timeout_jiffies = 0;
	rxe_cleanup_task(&qp->resp.task);

	del_timer_sync(&qp->retrans_timer);
	del_timer_sync(&qp->rnr_nak_timer);

	rxe_cleanup_task(&qp->req.task);
	if (qp_type(qp) == IB_QPT_RC)
		rxe_cleanup_task(&qp->comp.task);

	/* flush out any receive wr's or pending requests */
	__rxe_do_task(&qp->req.task);
	if (qp->sq.queue) {
		__rxe_do_task(&qp->comp.task);
		__rxe_do_task(&qp->req.task);
	}
}
Beispiel #3
0
Datei: rxe.c Projekt: Tyler-D/RXE
/* free resources for a rxe device
   all objects created for this device
   must have been destroyed */
static void rxe_cleanup(struct rxe_dev *rxe)
{
	rxe_cleanup_task(&rxe->arbiter.task);

	rxe_pool_cleanup(&rxe->uc_pool);
	rxe_pool_cleanup(&rxe->pd_pool);
	rxe_pool_cleanup(&rxe->ah_pool);
	rxe_pool_cleanup(&rxe->srq_pool);
	rxe_pool_cleanup(&rxe->qp_pool);
	rxe_pool_cleanup(&rxe->cq_pool);
	rxe_pool_cleanup(&rxe->mr_pool);
	rxe_pool_cleanup(&rxe->fmr_pool);
	rxe_pool_cleanup(&rxe->mw_pool);
	rxe_pool_cleanup(&rxe->mc_grp_pool);
	rxe_pool_cleanup(&rxe->mc_elem_pool);

	rxe_cleanup_ports(rxe);
}