# RE: \[PATCH 1/1\] qlcnic: add wmb() call in transmit data path.

- From: Sony Chacko \<hidden\>
- Date: 2016-07-01 01:12:51 
- List: netdev
- Page: https://ratatoskr.run/netdev/2016/07/11022385
- Thread: https://ratatoskr.run/netdev/2016/06/11022230/t.md

```text
Subject: Re: [PATCH 1/1] qlcnic: add wmb() call in transmit data path.

>
>> +    /* Ensure writes are complete before HW fetches Tx descriptors */
>> +    wmb();
>>       qlcnic_update_cmd_producer(tx_ring);
>>
>>       return NETDEV_TX_OK;
>>
>
> Would not an mmiowb be more appropriate in this case?
>
> Regards,
> Lino

Sorry, this was nonsense.This should be "dma_wmb" not "mmiowb".

Lino,

The patch is based on this kernel documentation. 

https://www.kernel.org/doc/Documentation/memory-barriers.txt
	
	/* force memory to sync before notifying device via MMIO */
		wmb();

		/* notify device of new descriptors */
		writel(DESC_NOTIFY, doorbell);
	}
The wmb() is needed to guarantee that the cache coherent memory writes have 
completed before attempting a write to the cache incoherent MMIO region.

Thanks,
Sony
```
