> Quoting Roland Dreier <[EMAIL PROTECTED]>:
> Subject: Re: socket buffer accounting with UDP/ipoib
> 
>  > > +                ib_dma_sync_single_for_cpu(priv->ca, addr, 
> IPOIB_BUF_SIZE,
>  > > +                                           DMA_FROM_DEVICE);
>  > > +                skb_copy_from_linear_data_offset(skb, IB_GRH_BYTES, 
> new_skb->data,
>  > > +                                                 wc->byte_len - 
> IB_GRH_BYTES);
>  > > +                ib_dma_sync_single_for_device(priv->ca, addr, 
> IPOIB_BUF_SIZE,
>  > > +                                              DMA_FROM_DEVICE);
>  > 
>  > BTW, why is ib_dma_sync_single_for_device necessary here?
> 
> Not sure what you're asking exactly.  The sync for device is needed to
> match the previous sync for the cpu obviously.

That's what I'm missing: must each sync_for_cpu be paired
with sync_for_device? Is there documentation for this somewhere?

> We need both syncs for
> the same reason we need the unmap when we don't copy -- we're copying
> data out of the skb we gave to the device earlier, so we need to make
> sure the cpu sees the right data.

Right, but device never reads the buffer, and CPU never modifies it.

-- 
MST
_______________________________________________
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