On Friday 01 February 2008 22:33, Roland Dreier wrote:
>  > --- infiniband.orig/drivers/infiniband/hw/mlx4/qp.c        2008-01-27 
> 10:44:25.000000000 +0200
>  > +++ infiniband/drivers/infiniband/hw/mlx4/qp.c     2008-01-27 
> 10:52:21.000000000 +0200
>  > @@ -96,7 +96,7 @@ static int is_qp0(struct mlx4_ib_dev *de
>  >  
>  >  static void *get_wqe(struct mlx4_ib_qp *qp, int offset)
>  >  {
>  > -  if (qp->buf.nbufs == 1)
>  > +  if (BITS_PER_LONG == 64 || qp->buf.nbufs == 1)
>  >            return qp->buf.u.direct.buf + offset;
>  >    else
>  >            return qp->buf.u.page_list[offset >> PAGE_SHIFT].buf +
> 
> I don't see any changes to cq.c -- it seems we would want to make the
> same optimization there, right?  Or is it actually better to walk the
> two-level stuff ourselves when we can?
> 

We can certainly do the same optimization for CQs. The reason it wasn't done
was that we focused on the shrinking WQE here -- and for a work request to 
span multiple WQE basic blocks, the work queue address space must be
virtually contiguous -- so the vmap optimization was necessary.

We just didn't expand it further at the time.

- Jack 
_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

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

Reply via email to