On Mon, Feb 10, 2020 at 05:08:40PM +0800, Weihang Li wrote: > From: Xi Wang <wangxi11@xxxxxxxxxx> > > Encapsulate the kernel qp doorbell allocation related code into 2 > functions: alloc_qp_db() and free_qp_db(). > > Signed-off-by: Xi Wang <wangxi11@xxxxxxxxxx> > Signed-off-by: Weihang Li <liweihang@xxxxxxxxxx> > drivers/infiniband/hw/hns/hns_roce_qp.c | 214 +++++++++++++++++--------------- > 1 file changed, 113 insertions(+), 101 deletions(-) > > diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c > index ad34187..46785f1 100644 > +++ b/drivers/infiniband/hw/hns/hns_roce_qp.c > @@ -844,6 +844,96 @@ static void free_qp_buf(struct hns_roce_dev *hr_dev, struct hns_roce_qp *hr_qp) > free_rq_inline_buf(hr_qp); > } > > +#define user_qp_has_sdb(hr_dev, init_attr, udata, resp, ucmd) \ > + ((hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_SQ_RECORD_DB) && \ > + udata->outlen >= sizeof(*resp) && \ > + hns_roce_qp_has_sq(init_attr) && udata->inlen >= sizeof(*ucmd)) > + > +#define user_qp_has_rdb(hr_dev, init_attr, udata, resp) \ > + ((hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_RECORD_DB) && \ > + udata->outlen >= sizeof(*resp) && \ > + hns_roce_qp_has_rq(init_attr)) > + > +#define kernel_qp_has_rdb(hr_dev, init_attr) \ > + ((hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_RECORD_DB) && \ > + hns_roce_qp_has_rq(init_attr)) static inline functions not defines please Also, these tests against inline and outlen look very strange. What are they doing? Jason