summaryrefslogtreecommitdiffstats
path: root/freebsd/sys/dev/dwc/if_dwc.c
diff options
context:
space:
mode:
Diffstat (limited to 'freebsd/sys/dev/dwc/if_dwc.c')
-rw-r--r--freebsd/sys/dev/dwc/if_dwc.c29
1 files changed, 12 insertions, 17 deletions
diff --git a/freebsd/sys/dev/dwc/if_dwc.c b/freebsd/sys/dev/dwc/if_dwc.c
index 98885edc..1d606977 100644
--- a/freebsd/sys/dev/dwc/if_dwc.c
+++ b/freebsd/sys/dev/dwc/if_dwc.c
@@ -893,27 +893,22 @@ dwc_intr(void *arg)
READ4(sc, SGMII_RGMII_SMII_CTRL_STATUS);
reg = READ4(sc, DMA_STATUS);
- if (reg & DMA_STATUS_NIS) {
- if (reg & DMA_STATUS_RI)
- dwc_rxfinish_locked(sc);
+ WRITE4(sc, DMA_STATUS, reg & DMA_STATUS_INTR_MASK);
- if (reg & DMA_STATUS_TI) {
- dwc_txfinish_locked(sc);
- dwc_txstart_locked(sc);
- }
- }
+ if (reg & (DMA_STATUS_RI | DMA_STATUS_RU))
+ dwc_rxfinish_locked(sc);
- if (reg & DMA_STATUS_AIS) {
- if (reg & DMA_STATUS_FBI) {
- /* Fatal bus error */
- device_printf(sc->dev,
- "Ethernet DMA error, restarting controller.\n");
- dwc_stop_locked(sc);
- dwc_init_locked(sc);
- }
+ if (reg & DMA_STATUS_TI)
+ dwc_txfinish_locked(sc);
+
+ if (reg & DMA_STATUS_FBI) {
+ /* Fatal bus error */
+ device_printf(sc->dev,
+ "Ethernet DMA error, restarting controller.\n");
+ dwc_stop_locked(sc);
+ dwc_init_locked(sc);
}
- WRITE4(sc, DMA_STATUS, reg & DMA_STATUS_INTR_MASK);
DWC_UNLOCK(sc);
}