On 2021/3/26 22:40, Jason Gunthorpe wrote: > On Wed, Mar 17, 2021 at 05:09:40PM +0800, Weihang Li wrote: >> From: Yixing Liu <liuyixing1@xxxxxxxxxx> >> >> Encapsulate two subprocesses into functions. >> >> Signed-off-by: Yixing Liu <liuyixing1@xxxxxxxxxx> >> Signed-off-by: Weihang Li <liweihang@xxxxxxxxxx> >> drivers/infiniband/hw/hns/hns_roce_cq.c | 87 ++++++++++++++++++++++----------- >> 1 file changed, 59 insertions(+), 28 deletions(-) >> >> diff --git a/drivers/infiniband/hw/hns/hns_roce_cq.c b/drivers/infiniband/hw/hns/hns_roce_cq.c >> index 74fc494..467caa9 100644 >> +++ b/drivers/infiniband/hw/hns/hns_roce_cq.c >> @@ -276,6 +276,58 @@ static void free_cq_db(struct hns_roce_dev *hr_dev, struct hns_roce_cq *hr_cq, >> } >> } >> >> +static int verify_cq_create_attr(struct hns_roce_dev *hr_dev, >> + const struct ib_cq_init_attr *attr) >> +{ >> + struct ib_device *ibdev = &hr_dev->ib_dev; >> + >> + if (!attr->cqe || attr->cqe > hr_dev->caps.max_cqes) { >> + ibdev_err(ibdev, "failed to check CQ count %u, max = %u.\n", >> + attr->cqe, hr_dev->caps.max_cqes); >> + return -EINVAL; >> + } >> + >> + if (attr->comp_vector >= hr_dev->caps.num_comp_vectors) { >> + ibdev_err(ibdev, "failed to check CQ vector = %u, max = %d.\n", >> + attr->comp_vector, hr_dev->caps.num_comp_vectors); >> + return -EINVAL; >> + } >> + >> + return 0; >> +} >> + >> +static int get_cq_ucmd(struct hns_roce_cq *hr_cq, struct ib_udata *udata, >> + struct hns_roce_ib_create_cq *ucmd) >> +{ >> + struct ib_device *ibdev = hr_cq->ib_cq.device; >> + int ret; >> + >> + ret = ib_copy_from_udata(ucmd, udata, min(udata->inlen, >> + sizeof(*ucmd))); > > Is this leading up to something? Wrapping one function in another is > getting a bit silly > > Jason > Thanks, I will use a variable instead. Weihang