Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/dwc/if_dwc.c
Show First 20 Lines • Show All 802 Lines • ▼ Show 20 Lines | for (;;) { | ||||
sc->rx_idx = next_rxidx(sc, sc->rx_idx); | sc->rx_idx = next_rxidx(sc, sc->rx_idx); | ||||
} | } | ||||
} | } | ||||
static void | static void | ||||
dwc_intr(void *arg) | dwc_intr(void *arg) | ||||
{ | { | ||||
struct epoch_tracker et; | |||||
struct dwc_softc *sc; | struct dwc_softc *sc; | ||||
uint32_t reg; | uint32_t reg; | ||||
sc = arg; | sc = arg; | ||||
DWC_LOCK(sc); | DWC_LOCK(sc); | ||||
reg = READ4(sc, INTERRUPT_STATUS); | reg = READ4(sc, INTERRUPT_STATUS); | ||||
if (reg) | if (reg) | ||||
READ4(sc, SGMII_RGMII_SMII_CTRL_STATUS); | READ4(sc, SGMII_RGMII_SMII_CTRL_STATUS); | ||||
reg = READ4(sc, DMA_STATUS); | reg = READ4(sc, DMA_STATUS); | ||||
if (reg & DMA_STATUS_NIS) { | if (reg & DMA_STATUS_NIS) { | ||||
if (reg & DMA_STATUS_RI) | if (reg & DMA_STATUS_RI) { | ||||
NET_EPOCH_ENTER(et); | |||||
dwc_rxfinish_locked(sc); | dwc_rxfinish_locked(sc); | ||||
NET_EPOCH_EXIT(et); | |||||
} | |||||
if (reg & DMA_STATUS_TI) { | if (reg & DMA_STATUS_TI) { | ||||
dwc_txfinish_locked(sc); | dwc_txfinish_locked(sc); | ||||
dwc_txstart_locked(sc); | dwc_txstart_locked(sc); | ||||
} | } | ||||
} | } | ||||
if (reg & DMA_STATUS_AIS) { | if (reg & DMA_STATUS_AIS) { | ||||
▲ Show 20 Lines • Show All 568 Lines • Show Last 20 Lines |