在 2019/6/24 19:47, Lijun Ou 写道: > From: o00290482 <o00290482@xxxxxxxxxx> Hi, Jason May be my local configuration error causing the wroong author. How should I make changes? The correct as follows: From: Lijun Ou <oulijun@xxxxxxxxxx> > The buffer size of qp which used to allocate qp buffer space for > storing sqwqe and rqwqe will be the length of buffer space. The > kernel driver will use the buffer address and the same size to > get the user memory. The same size named buff_size of qp. According > the algorithm of calculating, The size of the two is not equal > when users set the max sge of sq. > > Fixes: b28ca7cceff8 ("RDMA/hns: Limit extend sq sge num") > Signed-off-by: Lijun Ou <oulijun@xxxxxxxxxx> > --- > drivers/infiniband/hw/hns/hns_roce_qp.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c > index 305be42..d56c03d 100644 > --- a/drivers/infiniband/hw/hns/hns_roce_qp.c > +++ b/drivers/infiniband/hw/hns/hns_roce_qp.c > @@ -392,8 +392,8 @@ static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev, > hr_qp->sq.wqe_shift), PAGE_SIZE); > } else { > page_size = 1 << (hr_dev->caps.mtt_buf_pg_sz + PAGE_SHIFT); > - hr_qp->sge.sge_cnt = > - max(page_size / (1 << hr_qp->sge.sge_shift), ex_sge_num); > + hr_qp->sge.sge_cnt = ex_sge_num ? > + max(page_size / (1 << hr_qp->sge.sge_shift), ex_sge_num) : 0; > hr_qp->buff_size = HNS_ROCE_ALOGN_UP((hr_qp->rq.wqe_cnt << > hr_qp->rq.wqe_shift), page_size) + > HNS_ROCE_ALOGN_UP((hr_qp->sge.sge_cnt <<