Quoting r. Ralph Campbell <[EMAIL PROTECTED]>:
> diff -r f37bd0e41fec drivers/infiniband/ulp/ipoib/ipoib_ib.c
> --- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c Thu Oct 26 21:44:41 2006 +0700
> +++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c Thu Oct 26 12:37:09 2006 -0800
> @@ -109,9 +109,8 @@ static int ipoib_ib_post_receive(struct 
>       ret = ib_post_recv(priv->qp, &param, &bad_wr);
>       if (unlikely(ret)) {
>               ipoib_warn(priv, "receive failed for buf %d (%d)\n", id, ret);
> -             dma_unmap_single(priv->ca->dma_device,
> -                              priv->rx_ring[id].mapping,
> -                              IPOIB_BUF_SIZE, DMA_FROM_DEVICE);
> +             ib_dma_unmap_single(priv->ca, priv->rx_ring[id].mapping,
> +                                 IPOIB_BUF_SIZE, DMA_FROM_DEVICE);
>               dev_kfree_skb_any(priv->rx_ring[id].skb);
>               priv->rx_ring[id].skb = NULL;
>       }

Hmm, since ib_dma_unmap_single calls a function through a pointer,
this seems to introduce overhead on data path operations in ipoib.
For apps like ipoib always working with low memory, I think it is important to 
avoid this
overhead of extra indirect function calls at least on systems without IO MMU -
where e.g. dma_unmap_single is empty.
This probably means you need some of architecture-dependent code,
but should be possible - look at how dma API is implemented for an example.
And this applies to all ULPs on systems without high memory.

-- 
MST

_______________________________________________
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