diff mbox series

[for-next,01/13] RDMA/hns: Encapsulate some lines for setting sq size in user mode

Message ID 1564477010-29804-2-git-send-email-oulijun@huawei.com (mailing list archive)
State Superseded
Delegated to: Jason Gunthorpe
Headers show
Series Updates for 5.3-rc2 | expand

Commit Message

Lijun Ou July 30, 2019, 8:56 a.m. UTC
It needs to check the sq size with integrity when configures
the relatived parameters of sq. Here moves the relatived code
into a special function.

Signed-off-by: Lijun Ou <oulijun@huawei.com>
---
 drivers/infiniband/hw/hns/hns_roce_qp.c | 29 ++++++++++++++++++++++-------
 1 file changed, 22 insertions(+), 7 deletions(-)

Comments

Gal Pressman July 30, 2019, 11:16 a.m. UTC | #1
On 30/07/2019 11:56, Lijun Ou wrote:
> It needs to check the sq size with integrity when configures
> the relatived parameters of sq. Here moves the relatived code
> into a special function.
> 
> Signed-off-by: Lijun Ou <oulijun@huawei.com>
> ---
>  drivers/infiniband/hw/hns/hns_roce_qp.c | 29 ++++++++++++++++++++++-------
>  1 file changed, 22 insertions(+), 7 deletions(-)
> 
> diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c
> index 9c272c2..35ef7e2 100644
> --- a/drivers/infiniband/hw/hns/hns_roce_qp.c
> +++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
> @@ -324,16 +324,12 @@ static int hns_roce_set_rq_size(struct hns_roce_dev *hr_dev,
>  	return 0;
>  }
>  
> -static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev,
> -				     struct ib_qp_cap *cap,
> -				     struct hns_roce_qp *hr_qp,
> -				     struct hns_roce_ib_create_qp *ucmd)
> +static int check_sq_size_with_integrity(struct hns_roce_dev *hr_dev,
> +					struct ib_qp_cap *cap,
> +					struct hns_roce_ib_create_qp *ucmd)
>  {
>  	u32 roundup_sq_stride = roundup_pow_of_two(hr_dev->caps.max_sq_desc_sz);
>  	u8 max_sq_stride = ilog2(roundup_sq_stride);
> -	u32 ex_sge_num;
> -	u32 page_size;
> -	u32 max_cnt;
>  
>  	/* Sanity check SQ size before proceeding */
>  	if ((u32)(1 << ucmd->log_sq_bb_count) > hr_dev->caps.max_wqes ||
> @@ -349,6 +345,25 @@ static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev,
>  		return -EINVAL;
>  	}
>  
> +	return 0;
> +}
> +
> +static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev,
> +				     struct ib_qp_cap *cap,
> +				     struct hns_roce_qp *hr_qp,
> +				     struct hns_roce_ib_create_qp *ucmd)
> +{
> +	u32 ex_sge_num;
> +	u32 page_size;
> +	u32 max_cnt;
> +	int ret;
> +
> +	ret = check_sq_size_with_integrity(hr_dev, cap, ucmd);
> +	if (ret) {
> +		dev_err(hr_dev->dev, "Sanity check sq size fail\n");

Consider using ibdev_err, same applies for other patches.

> +		return ret;
> +	}
> +
>  	hr_qp->sq.wqe_cnt = 1 << ucmd->log_sq_bb_count;
>  	hr_qp->sq.wqe_shift = ucmd->log_sq_stride;
>  
>
Jason Gunthorpe July 30, 2019, 12:17 p.m. UTC | #2
On Tue, Jul 30, 2019 at 02:16:01PM +0300, Gal Pressman wrote:
> On 30/07/2019 11:56, Lijun Ou wrote:
> > It needs to check the sq size with integrity when configures
> > the relatived parameters of sq. Here moves the relatived code
> > into a special function.
> > 
> > Signed-off-by: Lijun Ou <oulijun@huawei.com>
> >  drivers/infiniband/hw/hns/hns_roce_qp.c | 29 ++++++++++++++++++++++-------
> >  1 file changed, 22 insertions(+), 7 deletions(-)
> > 
> > diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c
> > index 9c272c2..35ef7e2 100644
> > +++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
> > @@ -324,16 +324,12 @@ static int hns_roce_set_rq_size(struct hns_roce_dev *hr_dev,
> >  	return 0;
> >  }
> >  
> > -static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev,
> > -				     struct ib_qp_cap *cap,
> > -				     struct hns_roce_qp *hr_qp,
> > -				     struct hns_roce_ib_create_qp *ucmd)
> > +static int check_sq_size_with_integrity(struct hns_roce_dev *hr_dev,
> > +					struct ib_qp_cap *cap,
> > +					struct hns_roce_ib_create_qp *ucmd)
> >  {
> >  	u32 roundup_sq_stride = roundup_pow_of_two(hr_dev->caps.max_sq_desc_sz);
> >  	u8 max_sq_stride = ilog2(roundup_sq_stride);
> > -	u32 ex_sge_num;
> > -	u32 page_size;
> > -	u32 max_cnt;
> >  
> >  	/* Sanity check SQ size before proceeding */
> >  	if ((u32)(1 << ucmd->log_sq_bb_count) > hr_dev->caps.max_wqes ||
> > @@ -349,6 +345,25 @@ static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev,
> >  		return -EINVAL;
> >  	}
> >  
> > +	return 0;
> > +}
> > +
> > +static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev,
> > +				     struct ib_qp_cap *cap,
> > +				     struct hns_roce_qp *hr_qp,
> > +				     struct hns_roce_ib_create_qp *ucmd)
> > +{
> > +	u32 ex_sge_num;
> > +	u32 page_size;
> > +	u32 max_cnt;
> > +	int ret;
> > +
> > +	ret = check_sq_size_with_integrity(hr_dev, cap, ucmd);
> > +	if (ret) {
> > +		dev_err(hr_dev->dev, "Sanity check sq size fail\n");
> 
> Consider using ibdev_err, same applies for other patches.

It would be good if driver authors would convert their drivers to use
the new interfaces

Jason
Lijun Ou July 30, 2019, 1:37 p.m. UTC | #3
在 2019/7/30 20:17, Jason Gunthorpe 写道:
> On Tue, Jul 30, 2019 at 02:16:01PM +0300, Gal Pressman wrote:
>> On 30/07/2019 11:56, Lijun Ou wrote:
>>> It needs to check the sq size with integrity when configures
>>> the relatived parameters of sq. Here moves the relatived code
>>> into a special function.
>>>
>>> Signed-off-by: Lijun Ou <oulijun@huawei.com>
>>>  drivers/infiniband/hw/hns/hns_roce_qp.c | 29 ++++++++++++++++++++++-------
>>>  1 file changed, 22 insertions(+), 7 deletions(-)
>>>
>>> diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c
>>> index 9c272c2..35ef7e2 100644
>>> +++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
>>> @@ -324,16 +324,12 @@ static int hns_roce_set_rq_size(struct hns_roce_dev *hr_dev,
>>>  	return 0;
>>>  }
>>>  
>>> -static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev,
>>> -				     struct ib_qp_cap *cap,
>>> -				     struct hns_roce_qp *hr_qp,
>>> -				     struct hns_roce_ib_create_qp *ucmd)
>>> +static int check_sq_size_with_integrity(struct hns_roce_dev *hr_dev,
>>> +					struct ib_qp_cap *cap,
>>> +					struct hns_roce_ib_create_qp *ucmd)
>>>  {
>>>  	u32 roundup_sq_stride = roundup_pow_of_two(hr_dev->caps.max_sq_desc_sz);
>>>  	u8 max_sq_stride = ilog2(roundup_sq_stride);
>>> -	u32 ex_sge_num;
>>> -	u32 page_size;
>>> -	u32 max_cnt;
>>>  
>>>  	/* Sanity check SQ size before proceeding */
>>>  	if ((u32)(1 << ucmd->log_sq_bb_count) > hr_dev->caps.max_wqes ||
>>> @@ -349,6 +345,25 @@ static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev,
>>>  		return -EINVAL;
>>>  	}
>>>  
>>> +	return 0;
>>> +}
>>> +
>>> +static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev,
>>> +				     struct ib_qp_cap *cap,
>>> +				     struct hns_roce_qp *hr_qp,
>>> +				     struct hns_roce_ib_create_qp *ucmd)
>>> +{
>>> +	u32 ex_sge_num;
>>> +	u32 page_size;
>>> +	u32 max_cnt;
>>> +	int ret;
>>> +
>>> +	ret = check_sq_size_with_integrity(hr_dev, cap, ucmd);
>>> +	if (ret) {
>>> +		dev_err(hr_dev->dev, "Sanity check sq size fail\n");
>> Consider using ibdev_err, same applies for other patches.
> It would be good if driver authors would convert their drivers to use
> the new interfaces
>
> Jason
>
> .
Yes, I am testing the effects of both according to the recommendations.
I think we should consider replacement spparately,  Do you agree?
diff mbox series

Patch

diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c
index 9c272c2..35ef7e2 100644
--- a/drivers/infiniband/hw/hns/hns_roce_qp.c
+++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
@@ -324,16 +324,12 @@  static int hns_roce_set_rq_size(struct hns_roce_dev *hr_dev,
 	return 0;
 }
 
-static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev,
-				     struct ib_qp_cap *cap,
-				     struct hns_roce_qp *hr_qp,
-				     struct hns_roce_ib_create_qp *ucmd)
+static int check_sq_size_with_integrity(struct hns_roce_dev *hr_dev,
+					struct ib_qp_cap *cap,
+					struct hns_roce_ib_create_qp *ucmd)
 {
 	u32 roundup_sq_stride = roundup_pow_of_two(hr_dev->caps.max_sq_desc_sz);
 	u8 max_sq_stride = ilog2(roundup_sq_stride);
-	u32 ex_sge_num;
-	u32 page_size;
-	u32 max_cnt;
 
 	/* Sanity check SQ size before proceeding */
 	if ((u32)(1 << ucmd->log_sq_bb_count) > hr_dev->caps.max_wqes ||
@@ -349,6 +345,25 @@  static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev,
 		return -EINVAL;
 	}
 
+	return 0;
+}
+
+static int hns_roce_set_user_sq_size(struct hns_roce_dev *hr_dev,
+				     struct ib_qp_cap *cap,
+				     struct hns_roce_qp *hr_qp,
+				     struct hns_roce_ib_create_qp *ucmd)
+{
+	u32 ex_sge_num;
+	u32 page_size;
+	u32 max_cnt;
+	int ret;
+
+	ret = check_sq_size_with_integrity(hr_dev, cap, ucmd);
+	if (ret) {
+		dev_err(hr_dev->dev, "Sanity check sq size fail\n");
+		return ret;
+	}
+
 	hr_qp->sq.wqe_cnt = 1 << ucmd->log_sq_bb_count;
 	hr_qp->sq.wqe_shift = ucmd->log_sq_stride;