Re: [PATCH 1/1] qlcnic: add wmb() call in transmit data path.
From: Sony Chacko Date: Wed, 29 Jun 2016 17:51:34 -0400 > Call wmb() to ensure writes are complete before > hardware fetches updated Tx descriptors. > > Signed-off-by: Sony Chacko Applied, thanks.
RE: [PATCH 1/1] qlcnic: add wmb() call in transmit data path.
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
Re: [PATCH 1/1] qlcnic: add wmb() call in transmit data path.
On 30.06.2016 17:32, Lino Sanfilippo wrote: Hi, On 29.06.2016 23:51, Sony Chacko wrote: +/* 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". Regards, Lino
Re: [PATCH 1/1] qlcnic: add wmb() call in transmit data path.
Hi, On 29.06.2016 23:51, Sony Chacko wrote: + /* 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