mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-05 10:31:46 +09:00
net: stmmac: ensure that the device has released ownership before reading data
[ Upstream commit a6b25da5e7 ]
According to Documentation/memory-barriers.txt, we need to use a
dma_rmb() after reading the status/own bit, to ensure that all
descriptor fields are read after reading the own bit.
This way, we ensure that the DMA engine is done with the DMA
descriptor before we read the other descriptor fields, e.g. reading
the tx hardware timestamp (if PTP is enabled).
Signed-off-by: Niklas Cassel <niklas.cassel@axis.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <alexander.levin@microsoft.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
957094fcc0
commit
a3d4c34cde
@@ -1829,6 +1829,11 @@ static void stmmac_tx_clean(struct stmmac_priv *priv, u32 queue)
|
||||
if (unlikely(status & tx_dma_own))
|
||||
break;
|
||||
|
||||
/* Make sure descriptor fields are read after reading
|
||||
* the own bit.
|
||||
*/
|
||||
dma_rmb();
|
||||
|
||||
/* Just consider the last segment and ...*/
|
||||
if (likely(!(status & tx_not_ls))) {
|
||||
/* ... verify the status error condition */
|
||||
|
||||
Reference in New Issue
Block a user