Message ID | 20200130082049.463-1-kamalheib1@gmail.com (mailing list archive) |
---|---|
State | Accepted |
Delegated to: | Jason Gunthorpe |
Headers | show |
Series | [for-next] RDMA/providers: Fix return value when QP type isn't supported | expand |
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
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
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>
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 > >
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 >
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
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)
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) ||
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(-)