Quoting r. Roland Dreier <[EMAIL PROTECTED]>:
> Subject: Re: [PATCH 1/2] (fixed) mthca: max_inline_data support
> 
>     Michael> Roland, roundup_pow_of_two assumes that it gets a non-0
>     Michael> parameter, while I think its legal to have one of
>     Michael> max_recv_wr / max_send_wr equal 0.  Is that right?
> 
> Yes, good point.  I forgot about the possibility of zero-length work queues.
> 
> --- infiniband/hw/mthca/mthca_qp.c    (revision 2347)
> +++ infiniband/hw/mthca/mthca_qp.c    (working copy)
> @@ -1211,8 +1211,10 @@ static int mthca_set_qp_size(struct mthc
>                            struct mthca_qp *qp)
>  {
>       if (mthca_is_memfree(dev)) {
> -             qp->rq.max = roundup_pow_of_two(cap->max_recv_wr);
> -             qp->sq.max = roundup_pow_of_two(cap->max_send_wr);
> +             qp->rq.max = cap->max_recv_wr ?
> +                     roundup_pow_of_two(cap->max_recv_wr) : 0;
> +             qp->sq.max = cap->max_send_wr ?
> +                     roundup_pow_of_two(cap->max_send_wr) : 0;

Another problem is that fls may return 32 and you end up with
1 << 32 which AFAIK has undefined behaviour in C.
I guess kernel clients can be trusted not to, but uverbs better
check this.

-- 
MST - Michael S. Tsirkin
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to