mirror of
https://github.com/xemu-project/xemu.git
synced 2024-11-23 19:49:43 +00:00
hw/rdma: Add Query QP operation
This operation is needed by rdma devices - implement it. Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com> Reviewed-by: Marcel Apfelbaum <marcel@redhat.com> Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
This commit is contained in:
parent
4c2c101590
commit
c99f217431
@ -646,6 +646,18 @@ int rdma_backend_qp_state_rts(RdmaBackendQP *qp, uint8_t qp_type,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rdma_backend_query_qp(RdmaBackendQP *qp, struct ibv_qp_attr *attr,
|
||||
int attr_mask, struct ibv_qp_init_attr *init_attr)
|
||||
{
|
||||
if (!qp->ibqp) {
|
||||
pr_dbg("QP1\n");
|
||||
attr->qp_state = IBV_QPS_RTS;
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ibv_query_qp(qp->ibqp, attr, attr_mask, init_attr);
|
||||
}
|
||||
|
||||
void rdma_backend_destroy_qp(RdmaBackendQP *qp)
|
||||
{
|
||||
if (qp->ibqp) {
|
||||
|
@ -83,6 +83,8 @@ int rdma_backend_qp_state_rtr(RdmaBackendDev *backend_dev, RdmaBackendQP *qp,
|
||||
bool use_qkey);
|
||||
int rdma_backend_qp_state_rts(RdmaBackendQP *qp, uint8_t qp_type,
|
||||
uint32_t sq_psn, uint32_t qkey, bool use_qkey);
|
||||
int rdma_backend_query_qp(RdmaBackendQP *qp, struct ibv_qp_attr *attr,
|
||||
int attr_mask, struct ibv_qp_init_attr *init_attr);
|
||||
void rdma_backend_destroy_qp(RdmaBackendQP *qp);
|
||||
|
||||
void rdma_backend_post_send(RdmaBackendDev *backend_dev,
|
||||
|
@ -453,6 +453,24 @@ int rdma_rm_modify_qp(RdmaDeviceResources *dev_res, RdmaBackendDev *backend_dev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int rdma_rm_query_qp(RdmaDeviceResources *dev_res, RdmaBackendDev *backend_dev,
|
||||
uint32_t qp_handle, struct ibv_qp_attr *attr,
|
||||
int attr_mask, struct ibv_qp_init_attr *init_attr)
|
||||
{
|
||||
RdmaRmQP *qp;
|
||||
|
||||
pr_dbg("qpn=%d\n", qp_handle);
|
||||
|
||||
qp = rdma_rm_get_qp(dev_res, qp_handle);
|
||||
if (!qp) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
pr_dbg("qp_type=%d\n", qp->qp_type);
|
||||
|
||||
return rdma_backend_query_qp(&qp->backend_qp, attr, attr_mask, init_attr);
|
||||
}
|
||||
|
||||
void rdma_rm_dealloc_qp(RdmaDeviceResources *dev_res, uint32_t qp_handle)
|
||||
{
|
||||
RdmaRmQP *qp;
|
||||
|
@ -59,6 +59,9 @@ int rdma_rm_modify_qp(RdmaDeviceResources *dev_res, RdmaBackendDev *backend_dev,
|
||||
union ibv_gid *dgid, uint32_t dqpn,
|
||||
enum ibv_qp_state qp_state, uint32_t qkey,
|
||||
uint32_t rq_psn, uint32_t sq_psn);
|
||||
int rdma_rm_query_qp(RdmaDeviceResources *dev_res, RdmaBackendDev *backend_dev,
|
||||
uint32_t qp_handle, struct ibv_qp_attr *attr,
|
||||
int attr_mask, struct ibv_qp_init_attr *init_attr);
|
||||
void rdma_rm_dealloc_qp(RdmaDeviceResources *dev_res, uint32_t qp_handle);
|
||||
|
||||
int rdma_rm_alloc_cqe_ctx(RdmaDeviceResources *dev_res, uint32_t *cqe_ctx_id,
|
||||
|
Loading…
Reference in New Issue
Block a user