* [PATCH for-next] RDMA/providers: Fix return value when QP type isn't supported
@ 2020-01-30 8:20 Kamal Heib
2020-01-30 8:39 ` Leon Romanovsky
` (3 more replies)
0 siblings, 4 replies; 8+ messages in thread
From: Kamal Heib @ 2020-01-30 8:20 UTC (permalink / raw)
To: linux-rdma; +Cc: Doug Ledford, Jason Gunthorpe, Kamal Heib
The proper return code is "-EOPNOTSUPP" when the requested QP type is
not supported by the provider.
Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
---
drivers/infiniband/hw/bnxt_re/ib_verbs.c | 2 +-
drivers/infiniband/hw/cxgb4/qp.c | 2 +-
drivers/infiniband/hw/hns/hns_roce_qp.c | 2 +-
drivers/infiniband/hw/i40iw/i40iw_verbs.c | 2 +-
drivers/infiniband/hw/mlx4/qp.c | 2 +-
drivers/infiniband/hw/mlx5/qp.c | 2 +-
drivers/infiniband/hw/mthca/mthca_provider.c | 2 +-
drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 2 +-
drivers/infiniband/hw/qedr/verbs.c | 2 +-
drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 2 +-
drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 2 +-
drivers/infiniband/sw/rdmavt/qp.c | 2 +-
drivers/infiniband/sw/siw/siw_verbs.c | 2 +-
13 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
index 52b6a4d85460..f1a75ff44d5a 100644
--- a/drivers/infiniband/hw/bnxt_re/ib_verbs.c
+++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
@@ -1016,7 +1016,7 @@ struct ib_qp *bnxt_re_create_qp(struct ib_pd *ib_pd,
if (qp->qplib_qp.type == IB_QPT_MAX) {
dev_err(rdev_to_dev(rdev), "QP type 0x%x not supported",
qp->qplib_qp.type);
- rc = -EINVAL;
+ rc = -EOPNOTSUPP;
goto fail;
}
diff --git a/drivers/infiniband/hw/cxgb4/qp.c b/drivers/infiniband/hw/cxgb4/qp.c
index bbcac539777a..708216d82852 100644
--- a/drivers/infiniband/hw/cxgb4/qp.c
+++ b/drivers/infiniband/hw/cxgb4/qp.c
@@ -2127,7 +2127,7 @@ struct ib_qp *c4iw_create_qp(struct ib_pd *pd, struct ib_qp_init_attr *attrs,
pr_debug("ib_pd %p\n", pd);
if (attrs->qp_type != IB_QPT_RC)
- return ERR_PTR(-EINVAL);
+ return ERR_PTR(-EOPNOTSUPP);
php = to_c4iw_pd(pd);
rhp = php->rhp;
diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c
index 3257ad11be48..3df48bda4185 100644
--- a/drivers/infiniband/hw/hns/hns_roce_qp.c
+++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
@@ -1097,7 +1097,7 @@ struct ib_qp *hns_roce_create_qp(struct ib_pd *pd,
default:{
ibdev_err(ibdev, "not support QP type %d\n",
init_attr->qp_type);
- return ERR_PTR(-EINVAL);
+ return ERR_PTR(-EOPNOTSUPP);
}
}
diff --git a/drivers/infiniband/hw/i40iw/i40iw_verbs.c b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
index c335de91508f..fa1292932b88 100644
--- a/drivers/infiniband/hw/i40iw/i40iw_verbs.c
+++ b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
@@ -617,7 +617,7 @@ static struct ib_qp *i40iw_create_qp(struct ib_pd *ibpd,
iwqp->ctx_info.qp_compl_ctx = (uintptr_t)qp;
if (init_attr->qp_type != IB_QPT_RC) {
- err_code = -EINVAL;
+ err_code = -EOPNOTSUPP;
goto error;
}
if (iwdev->push_mode)
diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
index 26425dd2d960..2f9f78912267 100644
--- a/drivers/infiniband/hw/mlx4/qp.c
+++ b/drivers/infiniband/hw/mlx4/qp.c
@@ -1636,7 +1636,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
}
default:
/* Don't support raw QPs */
- return ERR_PTR(-EINVAL);
+ return ERR_PTR(-EOPNOTSUPP);
}
return &qp->ibqp;
diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
index a4f8e7030787..a597c9043b1d 100644
--- a/drivers/infiniband/hw/mlx5/qp.c
+++ b/drivers/infiniband/hw/mlx5/qp.c
@@ -2789,7 +2789,7 @@ struct ib_qp *mlx5_ib_create_qp(struct ib_pd *pd,
mlx5_ib_dbg(dev, "unsupported qp type %d\n",
init_attr->qp_type);
/* Don't support raw QPs */
- return ERR_PTR(-EINVAL);
+ return ERR_PTR(-EOPNOTSUPP);
}
if (verbs_init_attr->qp_type == IB_QPT_DRIVER)
diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c
index ac19d57803b5..69a3e4f62fb1 100644
--- a/drivers/infiniband/hw/mthca/mthca_provider.c
+++ b/drivers/infiniband/hw/mthca/mthca_provider.c
@@ -561,7 +561,7 @@ static struct ib_qp *mthca_create_qp(struct ib_pd *pd,
}
default:
/* Don't support raw QPs */
- return ERR_PTR(-ENOSYS);
+ return ERR_PTR(-EOPNOTSUPP);
}
if (err) {
diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
index d47ea675734b..10e343894595 100644
--- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
+++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
@@ -1111,7 +1111,7 @@ static int ocrdma_check_qp_params(struct ib_pd *ibpd, struct ocrdma_dev *dev,
(attrs->qp_type != IB_QPT_UD)) {
pr_err("%s(%d) unsupported qp type=0x%x requested\n",
__func__, dev->id, attrs->qp_type);
- return -EINVAL;
+ return -EOPNOTSUPP;
}
/* Skip the check for QP1 to support CM size of 128 */
if ((attrs->qp_type != IB_QPT_GSI) &&
diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c
index 484b555150e0..a5bd3adaf90a 100644
--- a/drivers/infiniband/hw/qedr/verbs.c
+++ b/drivers/infiniband/hw/qedr/verbs.c
@@ -1186,7 +1186,7 @@ static int qedr_check_qp_attrs(struct ib_pd *ibpd, struct qedr_dev *dev,
DP_DEBUG(dev, QEDR_MSG_QP,
"create qp: unsupported qp type=0x%x requested\n",
attrs->qp_type);
- return -EINVAL;
+ return -EOPNOTSUPP;
}
if (attrs->cap.max_send_wr > qattr->max_sqe) {
diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
index 556b8e44a51c..71f82339446c 100644
--- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
+++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
@@ -504,7 +504,7 @@ struct ib_qp *usnic_ib_create_qp(struct ib_pd *pd,
if (init_attr->qp_type != IB_QPT_UD) {
usnic_err("%s asked to make a non-UD QP: %d\n",
dev_name(&us_ibdev->ib_dev.dev), init_attr->qp_type);
- return ERR_PTR(-EINVAL);
+ return ERR_PTR(-EOPNOTSUPP);
}
trans_spec = cmd.spec;
diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c
index 9de1281f9a3b..afcc2abcf55c 100644
--- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c
+++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c
@@ -217,7 +217,7 @@ struct ib_qp *pvrdma_create_qp(struct ib_pd *pd,
init_attr->qp_type != IB_QPT_GSI) {
dev_warn(&dev->pdev->dev, "queuepair type %d not supported\n",
init_attr->qp_type);
- return ERR_PTR(-EINVAL);
+ return ERR_PTR(-EOPNOTSUPP);
}
if (is_srq && !dev->dsr->caps.max_srq) {
diff --git a/drivers/infiniband/sw/rdmavt/qp.c b/drivers/infiniband/sw/rdmavt/qp.c
index 3cdf75d0c7a4..762d4dc11c41 100644
--- a/drivers/infiniband/sw/rdmavt/qp.c
+++ b/drivers/infiniband/sw/rdmavt/qp.c
@@ -1196,7 +1196,7 @@ struct ib_qp *rvt_create_qp(struct ib_pd *ibpd,
default:
/* Don't support raw QPs */
- return ERR_PTR(-EINVAL);
+ return ERR_PTR(-EOPNOTSUPP);
}
init_attr->cap.max_inline_data = 0;
diff --git a/drivers/infiniband/sw/siw/siw_verbs.c b/drivers/infiniband/sw/siw/siw_verbs.c
index 07e30138aaa1..fab934bdb2a0 100644
--- a/drivers/infiniband/sw/siw/siw_verbs.c
+++ b/drivers/infiniband/sw/siw/siw_verbs.c
@@ -322,7 +322,7 @@ struct ib_qp *siw_create_qp(struct ib_pd *pd,
}
if (attrs->qp_type != IB_QPT_RC) {
siw_dbg(base_dev, "only RC QP's supported\n");
- rv = -EINVAL;
+ rv = -EOPNOTSUPP;
goto err_out;
}
if ((attrs->cap.max_send_wr > SIW_MAX_QP_WR) ||
--
2.21.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH for-next] RDMA/providers: Fix return value when QP type isn't supported
2020-01-30 8:20 [PATCH for-next] RDMA/providers: Fix return value when QP type isn't supported Kamal Heib
@ 2020-01-30 8:39 ` Leon Romanovsky
2020-01-30 16:07 ` Dennis Dalessandro
2020-01-30 16:08 ` Dennis Dalessandro
` (2 subsequent siblings)
3 siblings, 1 reply; 8+ messages in thread
From: Leon Romanovsky @ 2020-01-30 8:39 UTC (permalink / raw)
To: Kamal Heib; +Cc: linux-rdma, Doug Ledford, Jason Gunthorpe
On Thu, Jan 30, 2020 at 10:20:49AM +0200, Kamal Heib wrote:
> The proper return code is "-EOPNOTSUPP" when the requested QP type is
> not supported by the provider.
>
> Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
> ---
> drivers/infiniband/hw/bnxt_re/ib_verbs.c | 2 +-
> drivers/infiniband/hw/cxgb4/qp.c | 2 +-
> drivers/infiniband/hw/hns/hns_roce_qp.c | 2 +-
> drivers/infiniband/hw/i40iw/i40iw_verbs.c | 2 +-
> drivers/infiniband/hw/mlx4/qp.c | 2 +-
> drivers/infiniband/hw/mlx5/qp.c | 2 +-
> drivers/infiniband/hw/mthca/mthca_provider.c | 2 +-
> drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 2 +-
> drivers/infiniband/hw/qedr/verbs.c | 2 +-
> drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 2 +-
> drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 2 +-
> drivers/infiniband/sw/rdmavt/qp.c | 2 +-
> drivers/infiniband/sw/siw/siw_verbs.c | 2 +-
> 13 files changed, 13 insertions(+), 13 deletions(-)
*_err() prints definitely should go too. Simple user space
application will create DDOS on dmesg with those prints.
I would say that other prints should be removed too or at least
put in general way inside the caller of ->create_qp() callback.
Thanks
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH for-next] RDMA/providers: Fix return value when QP type isn't supported
2020-01-30 8:39 ` Leon Romanovsky
@ 2020-01-30 16:07 ` Dennis Dalessandro
2020-02-02 9:29 ` Leon Romanovsky
0 siblings, 1 reply; 8+ messages in thread
From: Dennis Dalessandro @ 2020-01-30 16:07 UTC (permalink / raw)
To: Leon Romanovsky, Kamal Heib; +Cc: linux-rdma, Doug Ledford, Jason Gunthorpe
On 1/30/2020 3:39 AM, Leon Romanovsky wrote:
> On Thu, Jan 30, 2020 at 10:20:49AM +0200, Kamal Heib wrote:
>> The proper return code is "-EOPNOTSUPP" when the requested QP type is
>> not supported by the provider.
>>
>> Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
>> ---
>> drivers/infiniband/hw/bnxt_re/ib_verbs.c | 2 +-
>> drivers/infiniband/hw/cxgb4/qp.c | 2 +-
>> drivers/infiniband/hw/hns/hns_roce_qp.c | 2 +-
>> drivers/infiniband/hw/i40iw/i40iw_verbs.c | 2 +-
>> drivers/infiniband/hw/mlx4/qp.c | 2 +-
>> drivers/infiniband/hw/mlx5/qp.c | 2 +-
>> drivers/infiniband/hw/mthca/mthca_provider.c | 2 +-
>> drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 2 +-
>> drivers/infiniband/hw/qedr/verbs.c | 2 +-
>> drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 2 +-
>> drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 2 +-
>> drivers/infiniband/sw/rdmavt/qp.c | 2 +-
>> drivers/infiniband/sw/siw/siw_verbs.c | 2 +-
>> 13 files changed, 13 insertions(+), 13 deletions(-)
>
> *_err() prints definitely should go too. Simple user space
> application will create DDOS on dmesg with those prints.
>
> I would say that other prints should be removed too or at least
> put in general way inside the caller of ->create_qp() callback.
I'd agree but I don't think that has to be done in this patch. This
looks fine to me.
-Denny
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH for-next] RDMA/providers: Fix return value when QP type isn't supported
2020-01-30 8:20 [PATCH for-next] RDMA/providers: Fix return value when QP type isn't supported Kamal Heib
2020-01-30 8:39 ` Leon Romanovsky
@ 2020-01-30 16:08 ` Dennis Dalessandro
2020-02-20 23:01 ` Kamal Heib
2020-03-04 16:14 ` Jason Gunthorpe
3 siblings, 0 replies; 8+ messages in thread
From: Dennis Dalessandro @ 2020-01-30 16:08 UTC (permalink / raw)
To: Kamal Heib, linux-rdma; +Cc: Doug Ledford, Jason Gunthorpe
On 1/30/2020 3:20 AM, Kamal Heib wrote:
> The proper return code is "-EOPNOTSUPP" when the requested QP type is
> not supported by the provider.
>
> Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
> ---
> drivers/infiniband/hw/bnxt_re/ib_verbs.c | 2 +-
> drivers/infiniband/hw/cxgb4/qp.c | 2 +-
> drivers/infiniband/hw/hns/hns_roce_qp.c | 2 +-
> drivers/infiniband/hw/i40iw/i40iw_verbs.c | 2 +-
> drivers/infiniband/hw/mlx4/qp.c | 2 +-
> drivers/infiniband/hw/mlx5/qp.c | 2 +-
> drivers/infiniband/hw/mthca/mthca_provider.c | 2 +-
> drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 2 +-
> drivers/infiniband/hw/qedr/verbs.c | 2 +-
> drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 2 +-
> drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 2 +-
> drivers/infiniband/sw/rdmavt/qp.c | 2 +-
> drivers/infiniband/sw/siw/siw_verbs.c | 2 +-
> 13 files changed, 13 insertions(+), 13 deletions(-)
Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH for-next] RDMA/providers: Fix return value when QP type isn't supported
2020-01-30 16:07 ` Dennis Dalessandro
@ 2020-02-02 9:29 ` Leon Romanovsky
0 siblings, 0 replies; 8+ messages in thread
From: Leon Romanovsky @ 2020-02-02 9:29 UTC (permalink / raw)
To: Dennis Dalessandro; +Cc: Kamal Heib, linux-rdma, Doug Ledford, Jason Gunthorpe
On Thu, Jan 30, 2020 at 11:07:17AM -0500, Dennis Dalessandro wrote:
> On 1/30/2020 3:39 AM, Leon Romanovsky wrote:
> > On Thu, Jan 30, 2020 at 10:20:49AM +0200, Kamal Heib wrote:
> > > The proper return code is "-EOPNOTSUPP" when the requested QP type is
> > > not supported by the provider.
> > >
> > > Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
> > > ---
> > > drivers/infiniband/hw/bnxt_re/ib_verbs.c | 2 +-
> > > drivers/infiniband/hw/cxgb4/qp.c | 2 +-
> > > drivers/infiniband/hw/hns/hns_roce_qp.c | 2 +-
> > > drivers/infiniband/hw/i40iw/i40iw_verbs.c | 2 +-
> > > drivers/infiniband/hw/mlx4/qp.c | 2 +-
> > > drivers/infiniband/hw/mlx5/qp.c | 2 +-
> > > drivers/infiniband/hw/mthca/mthca_provider.c | 2 +-
> > > drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 2 +-
> > > drivers/infiniband/hw/qedr/verbs.c | 2 +-
> > > drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 2 +-
> > > drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 2 +-
> > > drivers/infiniband/sw/rdmavt/qp.c | 2 +-
> > > drivers/infiniband/sw/siw/siw_verbs.c | 2 +-
> > > 13 files changed, 13 insertions(+), 13 deletions(-)
> >
> > *_err() prints definitely should go too. Simple user space
> > application will create DDOS on dmesg with those prints.
> >
> > I would say that other prints should be removed too or at least
> > put in general way inside the caller of ->create_qp() callback.
>
> I'd agree but I don't think that has to be done in this patch. This looks
> fine to me.
No doubts, I simply want to reduce the amount of churn.
Thanks
>
> -Denny
>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH for-next] RDMA/providers: Fix return value when QP type isn't supported
2020-01-30 8:20 [PATCH for-next] RDMA/providers: Fix return value when QP type isn't supported Kamal Heib
2020-01-30 8:39 ` Leon Romanovsky
2020-01-30 16:08 ` Dennis Dalessandro
@ 2020-02-20 23:01 ` Kamal Heib
2020-02-21 16:47 ` Jason Gunthorpe
2020-03-04 16:14 ` Jason Gunthorpe
3 siblings, 1 reply; 8+ messages in thread
From: Kamal Heib @ 2020-02-20 23:01 UTC (permalink / raw)
To: linux-rdma; +Cc: Doug Ledford, Jason Gunthorpe
On Thu, Jan 30, 2020 at 10:20:49AM +0200, Kamal Heib wrote:
> The proper return code is "-EOPNOTSUPP" when the requested QP type is
> not supported by the provider.
>
> Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
Anything blocking this patch from getting merged?
> ---
> drivers/infiniband/hw/bnxt_re/ib_verbs.c | 2 +-
> drivers/infiniband/hw/cxgb4/qp.c | 2 +-
> drivers/infiniband/hw/hns/hns_roce_qp.c | 2 +-
> drivers/infiniband/hw/i40iw/i40iw_verbs.c | 2 +-
> drivers/infiniband/hw/mlx4/qp.c | 2 +-
> drivers/infiniband/hw/mlx5/qp.c | 2 +-
> drivers/infiniband/hw/mthca/mthca_provider.c | 2 +-
> drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 2 +-
> drivers/infiniband/hw/qedr/verbs.c | 2 +-
> drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 2 +-
> drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 2 +-
> drivers/infiniband/sw/rdmavt/qp.c | 2 +-
> drivers/infiniband/sw/siw/siw_verbs.c | 2 +-
> 13 files changed, 13 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/infiniband/hw/bnxt_re/ib_verbs.c b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
> index 52b6a4d85460..f1a75ff44d5a 100644
> --- a/drivers/infiniband/hw/bnxt_re/ib_verbs.c
> +++ b/drivers/infiniband/hw/bnxt_re/ib_verbs.c
> @@ -1016,7 +1016,7 @@ struct ib_qp *bnxt_re_create_qp(struct ib_pd *ib_pd,
> if (qp->qplib_qp.type == IB_QPT_MAX) {
> dev_err(rdev_to_dev(rdev), "QP type 0x%x not supported",
> qp->qplib_qp.type);
> - rc = -EINVAL;
> + rc = -EOPNOTSUPP;
> goto fail;
> }
>
> diff --git a/drivers/infiniband/hw/cxgb4/qp.c b/drivers/infiniband/hw/cxgb4/qp.c
> index bbcac539777a..708216d82852 100644
> --- a/drivers/infiniband/hw/cxgb4/qp.c
> +++ b/drivers/infiniband/hw/cxgb4/qp.c
> @@ -2127,7 +2127,7 @@ struct ib_qp *c4iw_create_qp(struct ib_pd *pd, struct ib_qp_init_attr *attrs,
> pr_debug("ib_pd %p\n", pd);
>
> if (attrs->qp_type != IB_QPT_RC)
> - return ERR_PTR(-EINVAL);
> + return ERR_PTR(-EOPNOTSUPP);
>
> php = to_c4iw_pd(pd);
> rhp = php->rhp;
> diff --git a/drivers/infiniband/hw/hns/hns_roce_qp.c b/drivers/infiniband/hw/hns/hns_roce_qp.c
> index 3257ad11be48..3df48bda4185 100644
> --- a/drivers/infiniband/hw/hns/hns_roce_qp.c
> +++ b/drivers/infiniband/hw/hns/hns_roce_qp.c
> @@ -1097,7 +1097,7 @@ struct ib_qp *hns_roce_create_qp(struct ib_pd *pd,
> default:{
> ibdev_err(ibdev, "not support QP type %d\n",
> init_attr->qp_type);
> - return ERR_PTR(-EINVAL);
> + return ERR_PTR(-EOPNOTSUPP);
> }
> }
>
> diff --git a/drivers/infiniband/hw/i40iw/i40iw_verbs.c b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
> index c335de91508f..fa1292932b88 100644
> --- a/drivers/infiniband/hw/i40iw/i40iw_verbs.c
> +++ b/drivers/infiniband/hw/i40iw/i40iw_verbs.c
> @@ -617,7 +617,7 @@ static struct ib_qp *i40iw_create_qp(struct ib_pd *ibpd,
> iwqp->ctx_info.qp_compl_ctx = (uintptr_t)qp;
>
> if (init_attr->qp_type != IB_QPT_RC) {
> - err_code = -EINVAL;
> + err_code = -EOPNOTSUPP;
> goto error;
> }
> if (iwdev->push_mode)
> diff --git a/drivers/infiniband/hw/mlx4/qp.c b/drivers/infiniband/hw/mlx4/qp.c
> index 26425dd2d960..2f9f78912267 100644
> --- a/drivers/infiniband/hw/mlx4/qp.c
> +++ b/drivers/infiniband/hw/mlx4/qp.c
> @@ -1636,7 +1636,7 @@ static struct ib_qp *_mlx4_ib_create_qp(struct ib_pd *pd,
> }
> default:
> /* Don't support raw QPs */
> - return ERR_PTR(-EINVAL);
> + return ERR_PTR(-EOPNOTSUPP);
> }
>
> return &qp->ibqp;
> diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
> index a4f8e7030787..a597c9043b1d 100644
> --- a/drivers/infiniband/hw/mlx5/qp.c
> +++ b/drivers/infiniband/hw/mlx5/qp.c
> @@ -2789,7 +2789,7 @@ struct ib_qp *mlx5_ib_create_qp(struct ib_pd *pd,
> mlx5_ib_dbg(dev, "unsupported qp type %d\n",
> init_attr->qp_type);
> /* Don't support raw QPs */
> - return ERR_PTR(-EINVAL);
> + return ERR_PTR(-EOPNOTSUPP);
> }
>
> if (verbs_init_attr->qp_type == IB_QPT_DRIVER)
> diff --git a/drivers/infiniband/hw/mthca/mthca_provider.c b/drivers/infiniband/hw/mthca/mthca_provider.c
> index ac19d57803b5..69a3e4f62fb1 100644
> --- a/drivers/infiniband/hw/mthca/mthca_provider.c
> +++ b/drivers/infiniband/hw/mthca/mthca_provider.c
> @@ -561,7 +561,7 @@ static struct ib_qp *mthca_create_qp(struct ib_pd *pd,
> }
> default:
> /* Don't support raw QPs */
> - return ERR_PTR(-ENOSYS);
> + return ERR_PTR(-EOPNOTSUPP);
> }
>
> if (err) {
> diff --git a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
> index d47ea675734b..10e343894595 100644
> --- a/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
> +++ b/drivers/infiniband/hw/ocrdma/ocrdma_verbs.c
> @@ -1111,7 +1111,7 @@ static int ocrdma_check_qp_params(struct ib_pd *ibpd, struct ocrdma_dev *dev,
> (attrs->qp_type != IB_QPT_UD)) {
> pr_err("%s(%d) unsupported qp type=0x%x requested\n",
> __func__, dev->id, attrs->qp_type);
> - return -EINVAL;
> + return -EOPNOTSUPP;
> }
> /* Skip the check for QP1 to support CM size of 128 */
> if ((attrs->qp_type != IB_QPT_GSI) &&
> diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c
> index 484b555150e0..a5bd3adaf90a 100644
> --- a/drivers/infiniband/hw/qedr/verbs.c
> +++ b/drivers/infiniband/hw/qedr/verbs.c
> @@ -1186,7 +1186,7 @@ static int qedr_check_qp_attrs(struct ib_pd *ibpd, struct qedr_dev *dev,
> DP_DEBUG(dev, QEDR_MSG_QP,
> "create qp: unsupported qp type=0x%x requested\n",
> attrs->qp_type);
> - return -EINVAL;
> + return -EOPNOTSUPP;
> }
>
> if (attrs->cap.max_send_wr > qattr->max_sqe) {
> diff --git a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
> index 556b8e44a51c..71f82339446c 100644
> --- a/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
> +++ b/drivers/infiniband/hw/usnic/usnic_ib_verbs.c
> @@ -504,7 +504,7 @@ struct ib_qp *usnic_ib_create_qp(struct ib_pd *pd,
> if (init_attr->qp_type != IB_QPT_UD) {
> usnic_err("%s asked to make a non-UD QP: %d\n",
> dev_name(&us_ibdev->ib_dev.dev), init_attr->qp_type);
> - return ERR_PTR(-EINVAL);
> + return ERR_PTR(-EOPNOTSUPP);
> }
>
> trans_spec = cmd.spec;
> diff --git a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c
> index 9de1281f9a3b..afcc2abcf55c 100644
> --- a/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c
> +++ b/drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c
> @@ -217,7 +217,7 @@ struct ib_qp *pvrdma_create_qp(struct ib_pd *pd,
> init_attr->qp_type != IB_QPT_GSI) {
> dev_warn(&dev->pdev->dev, "queuepair type %d not supported\n",
> init_attr->qp_type);
> - return ERR_PTR(-EINVAL);
> + return ERR_PTR(-EOPNOTSUPP);
> }
>
> if (is_srq && !dev->dsr->caps.max_srq) {
> diff --git a/drivers/infiniband/sw/rdmavt/qp.c b/drivers/infiniband/sw/rdmavt/qp.c
> index 3cdf75d0c7a4..762d4dc11c41 100644
> --- a/drivers/infiniband/sw/rdmavt/qp.c
> +++ b/drivers/infiniband/sw/rdmavt/qp.c
> @@ -1196,7 +1196,7 @@ struct ib_qp *rvt_create_qp(struct ib_pd *ibpd,
>
> default:
> /* Don't support raw QPs */
> - return ERR_PTR(-EINVAL);
> + return ERR_PTR(-EOPNOTSUPP);
> }
>
> init_attr->cap.max_inline_data = 0;
> diff --git a/drivers/infiniband/sw/siw/siw_verbs.c b/drivers/infiniband/sw/siw/siw_verbs.c
> index 07e30138aaa1..fab934bdb2a0 100644
> --- a/drivers/infiniband/sw/siw/siw_verbs.c
> +++ b/drivers/infiniband/sw/siw/siw_verbs.c
> @@ -322,7 +322,7 @@ struct ib_qp *siw_create_qp(struct ib_pd *pd,
> }
> if (attrs->qp_type != IB_QPT_RC) {
> siw_dbg(base_dev, "only RC QP's supported\n");
> - rv = -EINVAL;
> + rv = -EOPNOTSUPP;
> goto err_out;
> }
> if ((attrs->cap.max_send_wr > SIW_MAX_QP_WR) ||
> --
> 2.21.1
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH for-next] RDMA/providers: Fix return value when QP type isn't supported
2020-02-20 23:01 ` Kamal Heib
@ 2020-02-21 16:47 ` Jason Gunthorpe
0 siblings, 0 replies; 8+ messages in thread
From: Jason Gunthorpe @ 2020-02-21 16:47 UTC (permalink / raw)
To: Kamal Heib; +Cc: linux-rdma, Doug Ledford
On Fri, Feb 21, 2020 at 01:01:38AM +0200, Kamal Heib wrote:
> On Thu, Jan 30, 2020 at 10:20:49AM +0200, Kamal Heib wrote:
> > The proper return code is "-EOPNOTSUPP" when the requested QP type is
> > not supported by the provider.
> >
> > Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
>
> Anything blocking this patch from getting merged?
It is tricky to check that nobody is reading the error code this
changed. Did you check it?
Jason
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH for-next] RDMA/providers: Fix return value when QP type isn't supported
2020-01-30 8:20 [PATCH for-next] RDMA/providers: Fix return value when QP type isn't supported Kamal Heib
` (2 preceding siblings ...)
2020-02-20 23:01 ` Kamal Heib
@ 2020-03-04 16:14 ` Jason Gunthorpe
3 siblings, 0 replies; 8+ messages in thread
From: Jason Gunthorpe @ 2020-03-04 16:14 UTC (permalink / raw)
To: Kamal Heib; +Cc: linux-rdma, Doug Ledford
On Thu, Jan 30, 2020 at 10:20:49AM +0200, Kamal Heib wrote:
> The proper return code is "-EOPNOTSUPP" when the requested QP type is
> not supported by the provider.
>
> Signed-off-by: Kamal Heib <kamalheib1@gmail.com>
> ---
> drivers/infiniband/hw/bnxt_re/ib_verbs.c | 2 +-
> drivers/infiniband/hw/cxgb4/qp.c | 2 +-
> drivers/infiniband/hw/hns/hns_roce_qp.c | 2 +-
> drivers/infiniband/hw/i40iw/i40iw_verbs.c | 2 +-
> drivers/infiniband/hw/mlx4/qp.c | 2 +-
> drivers/infiniband/hw/mlx5/qp.c | 2 +-
> drivers/infiniband/hw/mthca/mthca_provider.c | 2 +-
> drivers/infiniband/hw/ocrdma/ocrdma_verbs.c | 2 +-
> drivers/infiniband/hw/qedr/verbs.c | 2 +-
> drivers/infiniband/hw/usnic/usnic_ib_verbs.c | 2 +-
> drivers/infiniband/hw/vmw_pvrdma/pvrdma_qp.c | 2 +-
> drivers/infiniband/sw/rdmavt/qp.c | 2 +-
> drivers/infiniband/sw/siw/siw_verbs.c | 2 +-
> 13 files changed, 13 insertions(+), 13 deletions(-)
Well, it looks like we already have providers returning EOPNOTSUPP for
various cases under create_qp, so all callers already need to handle
it.
However, there are still lots of cases even within the create_qp flow
where the return codes are wrong. Below is what I thought for mlx5, so
this problem space needs a lot more attention.
But, fixing the obvious places that check qp_type seems like a
reasonable step, so applied to for-next
diff --git a/drivers/infiniband/hw/mlx5/qp.c b/drivers/infiniband/hw/mlx5/qp.c
index a4f8e703078718..daa1b6b370e17b 100644
--- a/drivers/infiniband/hw/mlx5/qp.c
+++ b/drivers/infiniband/hw/mlx5/qp.c
@@ -2023,7 +2023,7 @@ static int create_qp_common(struct mlx5_ib_dev *dev, struct ib_pd *pd,
if (init_attr->rwq_ind_tbl) {
if (!udata)
- return -ENOSYS;
+ return -EOPNOTSUPP;
err = create_rss_raw_qp_tir(dev, qp, pd, init_attr, udata);
return err;
@@ -2032,7 +2032,7 @@ static int create_qp_common(struct mlx5_ib_dev *dev, struct ib_pd *pd,
if (init_attr->create_flags & IB_QP_CREATE_BLOCK_MULTICAST_LOOPBACK) {
if (!MLX5_CAP_GEN(mdev, block_lb_mc)) {
mlx5_ib_dbg(dev, "block multicast loopback isn't supported\n");
- return -EINVAL;
+ return -EOPNOTSUPP;
} else {
qp->flags |= MLX5_IB_QP_BLOCK_MULTICAST_LOOPBACK;
}
@@ -2044,7 +2044,7 @@ static int create_qp_common(struct mlx5_ib_dev *dev, struct ib_pd *pd,
IB_QP_CREATE_MANAGED_RECV)) {
if (!MLX5_CAP_GEN(mdev, cd)) {
mlx5_ib_dbg(dev, "cross-channel isn't supported\n");
- return -EINVAL;
+ return -EOPNOTSUPP;
}
if (init_attr->create_flags & IB_QP_CREATE_CROSS_CHANNEL)
qp->flags |= MLX5_IB_QP_CROSS_CHANNEL;
@@ -2693,7 +2693,7 @@ struct ib_qp *mlx5_ib_create_qp(struct ib_pd *pd,
if (init_attr->qp_type == IB_QPT_RAW_PACKET) {
if (!ucontext) {
mlx5_ib_dbg(dev, "Raw Packet QP is not supported for kernel consumers\n");
- return ERR_PTR(-EINVAL);
+ return ERR_PTR(-EOPNOTSUPP;
} else if (!ucontext->cqe_version) {
mlx5_ib_dbg(dev, "Raw Packet QP is only supported for CQE version > 0\n");
return ERR_PTR(-EINVAL);
@@ -2735,7 +2735,7 @@ struct ib_qp *mlx5_ib_create_qp(struct ib_pd *pd,
case IB_QPT_XRC_INI:
if (!MLX5_CAP_GEN(dev->mdev, xrc)) {
mlx5_ib_dbg(dev, "XRC not supported\n");
- return ERR_PTR(-ENOSYS);
+ return ERR_PTR(-EOPNOTSUPP);
}
init_attr->recv_cq = NULL;
if (init_attr->qp_type == IB_QPT_XRC_TGT) {
@@ -2789,7 +2789,7 @@ struct ib_qp *mlx5_ib_create_qp(struct ib_pd *pd,
mlx5_ib_dbg(dev, "unsupported qp type %d\n",
init_attr->qp_type);
/* Don't support raw QPs */
- return ERR_PTR(-EINVAL);
+ return ERR_PTR(-EOPNOTSUPP);
}
if (verbs_init_attr->qp_type == IB_QPT_DRIVER)
^ permalink raw reply related [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-03-04 16:14 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-30 8:20 [PATCH for-next] RDMA/providers: Fix return value when QP type isn't supported Kamal Heib
2020-01-30 8:39 ` Leon Romanovsky
2020-01-30 16:07 ` Dennis Dalessandro
2020-02-02 9:29 ` Leon Romanovsky
2020-01-30 16:08 ` Dennis Dalessandro
2020-02-20 23:01 ` Kamal Heib
2020-02-21 16:47 ` Jason Gunthorpe
2020-03-04 16:14 ` Jason Gunthorpe
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.