Patchwork [1/1] IB/ehca: Disallow creating UC QP with SRQ

login
register
mail settings
Submitter Roland Dreier
Date Oct. 10, 2008, 9:41 p.m.
Message ID <adazllcku0c.fsf@cisco.com>
Download mbox | patch
Permalink /patch/3871/
State Accepted, archived
Commit 0540bbbe455e123a1692d26205ad1a29983883b0
Headers show

Comments

Roland Dreier - Oct. 10, 2008, 9:41 p.m.
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 <hnguyen@linux.vnet.ibm.com>
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 <micfaath@de.ibm.com>
    Signed-off-by: Roland Dreier <rolandd@cisco.com>
Hoang-Nam Nguyen - Oct. 13, 2008, 7:34 a.m.
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 <hnguyen@linux.vnet.ibm.com>
> 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 <micfaath@de.ibm.com>
>     Signed-off-by: Roland Dreier <rolandd@cisco.com>
> 
> 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;
>

Patch

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;