RDMA: Convert CQ allocations to be under core responsibility
Ensure that CQ is allocated and freed by IB/core and not by drivers. Signed-off-by: Leon Romanovsky <leonro@mellanox.com> Acked-by: Gal Pressman <galpress@amazon.com> Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Tested-by: Dennis Dalessandro <dennis.dalessandro@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:

کامیت شده توسط
Doug Ledford

والد
a52c8e2469
کامیت
e39afe3d6d
@@ -61,6 +61,10 @@ struct usnic_ib_pd {
|
||||
struct usnic_uiom_pd *umem_pd;
|
||||
};
|
||||
|
||||
struct usnic_ib_cq {
|
||||
struct ib_cq ibcq;
|
||||
};
|
||||
|
||||
struct usnic_ib_mr {
|
||||
struct ib_mr ibmr;
|
||||
struct usnic_uiom_reg *umem;
|
||||
|
@@ -354,6 +354,7 @@ static const struct ib_device_ops usnic_dev_ops = {
|
||||
.query_qp = usnic_ib_query_qp,
|
||||
.reg_user_mr = usnic_ib_reg_mr,
|
||||
INIT_RDMA_OBJ_SIZE(ib_pd, usnic_ib_pd, ibpd),
|
||||
INIT_RDMA_OBJ_SIZE(ib_cq, usnic_ib_cq, ibcq),
|
||||
INIT_RDMA_OBJ_SIZE(ib_ucontext, usnic_ib_ucontext, ibucontext),
|
||||
};
|
||||
|
||||
|
@@ -587,26 +587,18 @@ out_unlock:
|
||||
return status;
|
||||
}
|
||||
|
||||
struct ib_cq *usnic_ib_create_cq(struct ib_device *ibdev,
|
||||
const struct ib_cq_init_attr *attr,
|
||||
struct ib_udata *udata)
|
||||
int usnic_ib_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
|
||||
struct ib_udata *udata)
|
||||
{
|
||||
struct ib_cq *cq;
|
||||
|
||||
usnic_dbg("\n");
|
||||
if (attr->flags)
|
||||
return ERR_PTR(-EINVAL);
|
||||
return -EINVAL;
|
||||
|
||||
cq = kzalloc(sizeof(*cq), GFP_KERNEL);
|
||||
if (!cq)
|
||||
return ERR_PTR(-EBUSY);
|
||||
|
||||
return cq;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void usnic_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata)
|
||||
{
|
||||
kfree(cq);
|
||||
return;
|
||||
}
|
||||
|
||||
struct ib_mr *usnic_ib_reg_mr(struct ib_pd *pd, u64 start, u64 length,
|
||||
|
@@ -58,9 +58,8 @@ struct ib_qp *usnic_ib_create_qp(struct ib_pd *pd,
|
||||
int usnic_ib_destroy_qp(struct ib_qp *qp, struct ib_udata *udata);
|
||||
int usnic_ib_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr,
|
||||
int attr_mask, struct ib_udata *udata);
|
||||
struct ib_cq *usnic_ib_create_cq(struct ib_device *ibdev,
|
||||
const struct ib_cq_init_attr *attr,
|
||||
struct ib_udata *udata);
|
||||
int usnic_ib_create_cq(struct ib_cq *ibcq, const struct ib_cq_init_attr *attr,
|
||||
struct ib_udata *udata);
|
||||
void usnic_ib_destroy_cq(struct ib_cq *cq, struct ib_udata *udata);
|
||||
struct ib_mr *usnic_ib_reg_mr(struct ib_pd *pd, u64 start, u64 length,
|
||||
u64 virt_addr, int access_flags,
|
||||
|
مرجع در شماره جدید
Block a user