Erm, my previous commit was wrong and sis_tick() was only called each time

sis_ioctl() was called, so one had to use ifconfig each time the cable got
plugged in to be able to use the connection.
Do it a better way now, add a "in_tick" field in the softc structure,
call timeout() in sis_tick() and don't call it in sis_init() if in_tick is
non-zero.
Reported by:    Landmark Networks
Pointy hat to:  cognet
This commit is contained in:
Olivier Houchard 2003-07-22 01:35:09 +00:00
parent 930d8c703a
commit 2722485b08
2 changed files with 6 additions and 1 deletions

View File

@ -1739,6 +1739,7 @@ sis_tick(xsc)
sc = xsc;
SIS_LOCK(sc);
sc->in_tick = 1;
ifp = &sc->arpcom.ac_if;
mii = device_get_softc(sc->sis_miibus);
@ -1751,6 +1752,8 @@ sis_tick(xsc)
sis_start(ifp);
}
sc->sis_stat_ch = timeout(sis_tick, sc, hz);
sc->in_tick = 0;
SIS_UNLOCK(sc);
return;
@ -2187,7 +2190,8 @@ sis_init(xsc)
ifp->if_flags |= IFF_RUNNING;
ifp->if_flags &= ~IFF_OACTIVE;
sc->sis_stat_ch = timeout(sis_tick, sc, hz);
if (!sc->in_tick)
sc->sis_stat_ch = timeout(sis_tick, sc, hz);
SIS_UNLOCK(sc);

View File

@ -463,6 +463,7 @@ struct sis_softc {
#ifdef DEVICE_POLLING
int rxcycles;
#endif
int in_tick;
struct mtx sis_mtx;
};