Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/bwi/if_bwi.c
Show First 20 Lines • Show All 1,500 Lines • ▼ Show 20 Lines | bwi_stop_locked(struct bwi_softc *sc, int statechg) | ||||
sc->sc_tx_timer = 0; | sc->sc_tx_timer = 0; | ||||
callout_stop(&sc->sc_watchdog_timer); | callout_stop(&sc->sc_watchdog_timer); | ||||
sc->sc_flags &= ~BWI_F_RUNNING; | sc->sc_flags &= ~BWI_F_RUNNING; | ||||
} | } | ||||
void | void | ||||
bwi_intr(void *xsc) | bwi_intr(void *xsc) | ||||
{ | { | ||||
struct epoch_tracker et; | |||||
struct bwi_softc *sc = xsc; | struct bwi_softc *sc = xsc; | ||||
struct bwi_mac *mac; | struct bwi_mac *mac; | ||||
uint32_t intr_status; | uint32_t intr_status; | ||||
uint32_t txrx_intr_status[BWI_TXRX_NRING]; | uint32_t txrx_intr_status[BWI_TXRX_NRING]; | ||||
int i, txrx_error, tx = 0, rx_data = -1; | int i, txrx_error, tx = 0, rx_data = -1; | ||||
BWI_LOCK(sc); | BWI_LOCK(sc); | ||||
▲ Show 20 Lines • Show All 103 Lines • ▼ Show 20 Lines | if (intr_status & BWI_INTR_PMQ) { | ||||
} | } | ||||
CSR_WRITE_2(sc, BWI_MAC_PS_STATUS, 0x2); | CSR_WRITE_2(sc, BWI_MAC_PS_STATUS, 0x2); | ||||
} | } | ||||
if (intr_status & BWI_INTR_NOISE) | if (intr_status & BWI_INTR_NOISE) | ||||
device_printf(sc->sc_dev, "intr noise\n"); | device_printf(sc->sc_dev, "intr noise\n"); | ||||
if (txrx_intr_status[0] & BWI_TXRX_INTR_RX) { | if (txrx_intr_status[0] & BWI_TXRX_INTR_RX) { | ||||
NET_EPOCH_ENTER(et); | |||||
rx_data = sc->sc_rxeof(sc); | rx_data = sc->sc_rxeof(sc); | ||||
NET_EPOCH_EXIT(et); | |||||
if (sc->sc_flags & BWI_F_STOP) { | if (sc->sc_flags & BWI_F_STOP) { | ||||
BWI_UNLOCK(sc); | BWI_UNLOCK(sc); | ||||
return; | return; | ||||
} | } | ||||
} | } | ||||
if (txrx_intr_status[3] & BWI_TXRX_INTR_RX) { | if (txrx_intr_status[3] & BWI_TXRX_INTR_RX) { | ||||
sc->sc_txeof_status(sc); | sc->sc_txeof_status(sc); | ||||
▲ Show 20 Lines • Show All 2,374 Lines • Show Last 20 Lines |