2008-10-01 12:20:00

by Hoang-Nam Nguyen

[permalink] [raw]
Subject: [PATCH 1/1] IB/ehca: Disallow creating UC QP with SRQ

IB/ehca: Disallow creating QP for UC with SRQ

This patch prevents a UC QP to be created with SRQ, since current
firmware does not support this feature.

Signed-off-by: Michael Faath <[email protected]>
---
drivers/infiniband/hw/ehca/ehca_qp.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c
index b6bcee0..46897cd 100644
--- a/drivers/infiniband/hw/ehca/ehca_qp.c
+++ b/drivers/infiniband/hw/ehca/ehca_qp.c
@@ -460,6 +460,12 @@ static struct ehca_qp *internal_create_qp(
struct ehca_qp *my_srq =
container_of(init_attr->srq, struct ehca_qp, ib_srq);

+ if (qp_type == IB_QPT_UC) {
+ ehca_err(pd->device, "UC with SRQ not supported");
+ atomic_dec(&shca->num_qps);
+ return ERR_PTR(-EINVAL);
+ }
+
has_srq = 1;
parms.ext_type = EQPT_SRQBASE;
parms.srq_qpn = my_srq->real_qp_num;
--
1.5.5


2008-10-10 21:41:59

by Roland Dreier

[permalink] [raw]
Subject: Re: [PATCH 1/1] IB/ehca: Disallow creating UC QP with SRQ

thanks, applied -- it didn't apply to the latest tree, because of the
flush CQE changes, so I merged it manually as below -- let me know if
this is wrong:

commit 0540bbbe455e123a1692d26205ad1a29983883b0
Author: Hoang-Nam Nguyen <[email protected]>
Date: Fri Oct 10 14:40:39 2008 -0700

IB/ehca: Don't allow creating UC QP with SRQ

This patch prevents a UC QP to be created attached to an SRQ, since
current firmware does not support this feature.

Signed-off-by: Michael Faath <[email protected]>
Signed-off-by: Roland Dreier <[email protected]>

diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c
index 4dbe287..40b578d 100644
--- a/drivers/infiniband/hw/ehca/ehca_qp.c
+++ b/drivers/infiniband/hw/ehca/ehca_qp.c
@@ -502,6 +502,12 @@ static struct ehca_qp *internal_create_qp(
if (init_attr->srq) {
my_srq = container_of(init_attr->srq, struct ehca_qp, ib_srq);

+ if (qp_type == IB_QPT_UC) {
+ ehca_err(pd->device, "UC with SRQ not supported");
+ atomic_dec(&shca->num_qps);
+ return ERR_PTR(-EINVAL);
+ }
+
has_srq = 1;
parms.ext_type = EQPT_SRQBASE;
parms.srq_qpn = my_srq->real_qp_num;

2008-10-13 08:47:54

by Hoang-Nam Nguyen

[permalink] [raw]
Subject: Re: [PATCH 1/1] IB/ehca: Disallow creating UC QP with SRQ

Hi Roland,
That looks good to me.
Thanks for all help.

Nam

On Friday 10 October 2008 23:41, Roland Dreier wrote:
> thanks, applied -- it didn't apply to the latest tree, because of the
> flush CQE changes, so I merged it manually as below -- let me know if
> this is wrong:
>
> commit 0540bbbe455e123a1692d26205ad1a29983883b0
> Author: Hoang-Nam Nguyen <[email protected]>
> Date: Fri Oct 10 14:40:39 2008 -0700
>
> IB/ehca: Don't allow creating UC QP with SRQ
>
> This patch prevents a UC QP to be created attached to an SRQ, since
> current firmware does not support this feature.
>
> Signed-off-by: Michael Faath <[email protected]>
> Signed-off-by: Roland Dreier <[email protected]>
>
> diff --git a/drivers/infiniband/hw/ehca/ehca_qp.c b/drivers/infiniband/hw/ehca/ehca_qp.c
> index 4dbe287..40b578d 100644
> --- a/drivers/infiniband/hw/ehca/ehca_qp.c
> +++ b/drivers/infiniband/hw/ehca/ehca_qp.c
> @@ -502,6 +502,12 @@ static struct ehca_qp *internal_create_qp(
> if (init_attr->srq) {
> my_srq = container_of(init_attr->srq, struct ehca_qp, ib_srq);
>
> + if (qp_type == IB_QPT_UC) {
> + ehca_err(pd->device, "UC with SRQ not supported");
> + atomic_dec(&shca->num_qps);
> + return ERR_PTR(-EINVAL);
> + }
> +
> has_srq = 1;
> parms.ext_type = EQPT_SRQBASE;
> parms.srq_qpn = my_srq->real_qp_num;
>