mirror of
https://github.com/torvalds/linux.git
synced 2026-06-04 12:35:52 +02:00
staging/rdma/hfi1: Remove destroy qp verb
This removes the destroy qp verbs in favor of using rdmavt. Reviewed-by: Harish Chegondi <harish.chegondi@intel.com> Signed-off-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
ec4274f1ae
commit
75261cc6ab
|
|
@ -331,59 +331,6 @@ __be32 hfi1_compute_aeth(struct rvt_qp *qp)
|
||||||
return cpu_to_be32(aeth);
|
return cpu_to_be32(aeth);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* hfi1_destroy_qp - destroy a queue pair
|
|
||||||
* @ibqp: the queue pair to destroy
|
|
||||||
*
|
|
||||||
* Returns 0 on success.
|
|
||||||
*
|
|
||||||
* Note that this can be called while the QP is actively sending or
|
|
||||||
* receiving!
|
|
||||||
*/
|
|
||||||
int hfi1_destroy_qp(struct ib_qp *ibqp)
|
|
||||||
{
|
|
||||||
struct rvt_qp *qp = ibqp_to_rvtqp(ibqp);
|
|
||||||
struct hfi1_ibdev *dev = to_idev(ibqp->device);
|
|
||||||
struct hfi1_qp_priv *priv = qp->priv;
|
|
||||||
|
|
||||||
/* Make sure HW and driver activity is stopped. */
|
|
||||||
spin_lock_irq(&qp->r_lock);
|
|
||||||
spin_lock(&qp->s_lock);
|
|
||||||
if (qp->state != IB_QPS_RESET) {
|
|
||||||
qp->state = IB_QPS_RESET;
|
|
||||||
flush_iowait(qp);
|
|
||||||
qp->s_flags &= ~(RVT_S_TIMER | RVT_S_ANY_WAIT);
|
|
||||||
spin_unlock(&qp->s_lock);
|
|
||||||
spin_unlock_irq(&qp->r_lock);
|
|
||||||
cancel_work_sync(&priv->s_iowait.iowork);
|
|
||||||
del_timer_sync(&qp->s_timer);
|
|
||||||
iowait_sdma_drain(&priv->s_iowait);
|
|
||||||
flush_tx_list(qp);
|
|
||||||
rvt_remove_qp(ib_to_rvt(ibqp->device), qp);
|
|
||||||
wait_event(qp->wait, !atomic_read(&qp->refcount));
|
|
||||||
spin_lock_irq(&qp->r_lock);
|
|
||||||
spin_lock(&qp->s_lock);
|
|
||||||
rvt_clear_mr_refs(qp, 1);
|
|
||||||
clear_ahg(qp);
|
|
||||||
}
|
|
||||||
spin_unlock(&qp->s_lock);
|
|
||||||
spin_unlock_irq(&qp->r_lock);
|
|
||||||
|
|
||||||
/* all user's cleaned up, mark it available */
|
|
||||||
rvt_free_qpn(&dev->rdi.qp_dev->qpn_table, qp->ibqp.qp_num);
|
|
||||||
rvt_dec_qp_cnt(&dev->rdi);
|
|
||||||
|
|
||||||
if (qp->ip)
|
|
||||||
kref_put(&qp->ip->ref, rvt_release_mmap_info);
|
|
||||||
else
|
|
||||||
vfree(qp->r_rq.wq);
|
|
||||||
vfree(qp->s_wq);
|
|
||||||
kfree(priv->s_hdr);
|
|
||||||
kfree(priv);
|
|
||||||
kfree(qp);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hfi1_get_credit - flush the send work queue of a QP
|
* hfi1_get_credit - flush the send work queue of a QP
|
||||||
* @qp: the qp who's send work queue to flush
|
* @qp: the qp who's send work queue to flush
|
||||||
|
|
|
||||||
|
|
@ -95,17 +95,6 @@ __be32 hfi1_compute_aeth(struct rvt_qp *qp);
|
||||||
struct ib_qp *hfi1_create_qp(struct ib_pd *ibpd,
|
struct ib_qp *hfi1_create_qp(struct ib_pd *ibpd,
|
||||||
struct ib_qp_init_attr *init_attr,
|
struct ib_qp_init_attr *init_attr,
|
||||||
struct ib_udata *udata);
|
struct ib_udata *udata);
|
||||||
/**
|
|
||||||
* hfi1_destroy_qp - destroy a queue pair
|
|
||||||
* @ibqp: the queue pair to destroy
|
|
||||||
*
|
|
||||||
* Returns 0 on success.
|
|
||||||
*
|
|
||||||
* Note that this can be called while the QP is actively sending or
|
|
||||||
* receiving!
|
|
||||||
*/
|
|
||||||
int hfi1_destroy_qp(struct ib_qp *ibqp);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hfi1_get_credit - flush the send work queue of a QP
|
* hfi1_get_credit - flush the send work queue of a QP
|
||||||
* @qp: the qp who's send work queue to flush
|
* @qp: the qp who's send work queue to flush
|
||||||
|
|
|
||||||
|
|
@ -1625,7 +1625,7 @@ int hfi1_register_ib_device(struct hfi1_devdata *dd)
|
||||||
ibdev->create_qp = NULL;
|
ibdev->create_qp = NULL;
|
||||||
ibdev->modify_qp = NULL;
|
ibdev->modify_qp = NULL;
|
||||||
ibdev->query_qp = hfi1_query_qp;
|
ibdev->query_qp = hfi1_query_qp;
|
||||||
ibdev->destroy_qp = hfi1_destroy_qp;
|
ibdev->destroy_qp = NULL;
|
||||||
ibdev->post_send = NULL;
|
ibdev->post_send = NULL;
|
||||||
ibdev->post_recv = post_receive;
|
ibdev->post_recv = post_receive;
|
||||||
ibdev->post_srq_recv = hfi1_post_srq_receive;
|
ibdev->post_srq_recv = hfi1_post_srq_receive;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user