diff options
| author | Marek Vasut <[email protected]> | 2020-03-23 02:11:46 +0100 |
|---|---|---|
| committer | marex <[email protected]> | 2020-05-01 12:35:21 +0200 |
| commit | 24891dd8d40d71c034023d2a037c97df1714393b (patch) | |
| tree | 9902469951873d9d0455f4e26e1f63dbe872cd91 | |
| parent | a83ca0c280dd41dda576d6a8f15a8534a84b782c (diff) | |
net: dwc_eth_qos: Prevent DMA from writing updated RX DMA descriptor
The DMA may attempt to write a DMA descriptor in the ring while it is
being updated. By writing the DMA descriptor buffer address to 0, it
is assured the DMA will not use such a buffer and the buffer can be
updated without any interference.
Reviewed-by: Patrick Delaunay <[email protected]>
Signed-off-by: Marek Vasut <[email protected]>
Cc: Joe Hershberger <[email protected]>
Cc: Patrice Chotard <[email protected]>
Cc: Patrick Delaunay <[email protected]>
Cc: Ramon Fried <[email protected]>
Cc: Stephen Warren <[email protected]>
| -rw-r--r-- | drivers/net/dwc_eth_qos.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c index a195fe5c275..60dfd17a74d 100644 --- a/drivers/net/dwc_eth_qos.c +++ b/drivers/net/dwc_eth_qos.c @@ -1477,8 +1477,10 @@ static int eqos_free_pkt(struct udevice *dev, uchar *packet, int length) rx_desc = &(eqos->rx_descs[eqos->rx_desc_idx]); + rx_desc->des0 = 0; + mb(); + eqos->config->ops->eqos_flush_desc(rx_desc); eqos->config->ops->eqos_inval_buffer(packet, length); - rx_desc->des0 = (u32)(ulong)packet; rx_desc->des1 = 0; rx_desc->des2 = 0; |
