Move unarming watchdog timer and pending multicast configuration
check to fxp_txeof(). While I'm here unarm watchdog timer only if there are no pending queued Tx requests. Previously the watchdog timer was unarmed whenever Tx interrupt is raised. This could be resulted in hiding root cause of watchdog timeouts.
This commit is contained in:
parent
60bb79ebaa
commit
2593534403
@ -1547,6 +1547,11 @@ fxp_txeof(struct fxp_softc *sc)
|
||||
}
|
||||
sc->fxp_desc.tx_first = txp;
|
||||
bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_PREWRITE);
|
||||
if (sc->tx_queued == 0) {
|
||||
sc->watchdog_timer = 0;
|
||||
if (sc->need_mcsetup)
|
||||
fxp_mc_setup(sc);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1587,11 +1592,6 @@ fxp_intr_body(struct fxp_softc *sc, struct ifnet *ifp, uint8_t statack,
|
||||
if (statack & (FXP_SCB_STATACK_CXTNO | FXP_SCB_STATACK_CNA)) {
|
||||
fxp_txeof(sc);
|
||||
|
||||
sc->watchdog_timer = 0;
|
||||
if (sc->tx_queued == 0) {
|
||||
if (sc->need_mcsetup)
|
||||
fxp_mc_setup(sc);
|
||||
}
|
||||
/*
|
||||
* Try to start more packets transmitting.
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user