Subject: Re: [PATCH net-next 1/4] via-rhine: commit receive buffer address before descriptor status update.

From: Alexander Duyck <[email-masked]>
Date: Tue, 07 Apr 2015 16:20:49 -0700

On 04/07/2015 03:22 PM, Eric Dumazet wrote:
> On Tue, 2015-04-07 at 15:12 -0700, Alexander Duyck wrote:
>> On 04/07/2015 02:54 PM, Eric Dumazet wrote:
>>> To be fair, only 2 drivers currently use dma_wmb()
>> Hey, I got at least 4..  :-)  I only got around to patching 3 Intel
>> drivers and one RealTek since that is what I had to test with.  I was
>> honestly hoping there would be more interest from other developers to
>> pick this up and update their drivers to avoid unnecessary barriers but
>> it doesn't look like I have had much luck on that front.
> Strange I see only 2 drivers here, and no Intel ones :
>
> # git grep -l dma_wmb drivers/net
> drivers/net/ethernet/amd/xgbe/xgbe-dev.c
> drivers/net/ethernet/realtek/r8169.c
>
> I probably missed something ;)

Yeah, I was thinking of the dma_rmb more than the dma_wmb, they are 
essentially just two sides to the same coin.

dma_rmb - read descriptor status for ownership, then dma_rmb, then if we 
own it process rest of descriptor
dma_wmb - write descriptor fields, then dma_wmb, then update status bit 
to release ownership

A wmb is still needed if a PIO doorbell must be used to notify the 
device of additional descriptors.

- Alex