git: 43cd6bbba053 - main - dwc: re-rewrite barrier part
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Thu, 12 Oct 2023 18:56:39 UTC
The branch main has been updated by manu:
URL: https://cgit.FreeBSD.org/src/commit/?id=43cd6bbba053f02999d846ef297655ebec2d218b
commit 43cd6bbba053f02999d846ef297655ebec2d218b
Author: Emmanuel Vadot <manu@FreeBSD.org>
AuthorDate: 2023-10-12 18:54:52 +0000
Commit: Emmanuel Vadot <manu@FreeBSD.org>
CommitDate: 2023-10-12 18:56:16 +0000
dwc: re-rewrite barrier part
We need the DMA engine to have everything coherent *before* we
set the OWN bit (the bit that tells the DMA engine that it owns
the descriptor).
Fixes: 487034648805 ("dwc: Rewrite barrier part")
Reported by: jhb
---
sys/dev/dwc/dwc1000_dma.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/sys/dev/dwc/dwc1000_dma.c b/sys/dev/dwc/dwc1000_dma.c
index 4f8ae088305a..c91036f5a714 100644
--- a/sys/dev/dwc/dwc1000_dma.c
+++ b/sys/dev/dwc/dwc1000_dma.c
@@ -216,8 +216,8 @@ txdesc_setup(struct dwc_softc *sc, int idx, bus_addr_t paddr,
sc->txdesc_ring[idx].addr1 = (uint32_t)(paddr);
sc->txdesc_ring[idx].desc0 = desc0;
sc->txdesc_ring[idx].desc1 = desc1;
- sc->txdesc_ring[idx].desc0 |= TDESC0_OWN;
wmb();
+ sc->txdesc_ring[idx].desc0 |= TDESC0_OWN;
}
inline static uint32_t
@@ -236,8 +236,8 @@ rxdesc_setup(struct dwc_softc *sc, int idx, bus_addr_t paddr)
sc->rxdesc_ring[idx].desc1 = ERDESC1_RCH |
MIN(MCLBYTES, ERDESC1_RBS1_MASK);
- sc->rxdesc_ring[idx].desc0 = RDESC0_OWN;
wmb();
+ sc->rxdesc_ring[idx].desc0 = RDESC0_OWN;
return (nidx);
}
@@ -522,8 +522,8 @@ dma1000_rxfinish_locked(struct dwc_softc *sc)
m = dwc_rxfinish_one(sc, desc, sc->rxbuf_map + idx);
if (m == NULL) {
- desc->desc0 = RDESC0_OWN;
wmb();
+ desc->desc0 = RDESC0_OWN;
} else {
/* We cannot create hole in RX ring */
error = dma1000_setup_rxbuf(sc, idx, m);