if_watchdog -> rl_watchdog

This commit is contained in:
Ruslan Ermilov 2006-12-01 21:52:07 +00:00
parent d9cbee0c7d
commit 4a67956ec4
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=164811
2 changed files with 16 additions and 14 deletions

View file

@ -215,7 +215,7 @@ static void rl_stop(struct rl_softc *);
static int rl_suspend(device_t);
static void rl_tick(void *);
static void rl_txeof(struct rl_softc *);
static void rl_watchdog(struct ifnet *);
static void rl_watchdog(struct rl_softc *);
#ifdef RL_USEIOSPACE
#define RL_RES SYS_RES_IOPORT
@ -955,7 +955,6 @@ rl_attach(device_t dev)
ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST;
ifp->if_ioctl = rl_ioctl;
ifp->if_start = rl_start;
ifp->if_watchdog = rl_watchdog;
ifp->if_init = rl_init;
ifp->if_capabilities = IFCAP_VLAN_MTU;
ifp->if_capenable = ifp->if_capabilities;
@ -1265,9 +1264,9 @@ rl_txeof(struct rl_softc *sc)
} while (sc->rl_cdata.last_tx != sc->rl_cdata.cur_tx);
if (RL_LAST_TXMBUF(sc) == NULL)
ifp->if_timer = 0;
else if (ifp->if_timer == 0)
ifp->if_timer = 5;
sc->rl_watchdog_timer = 0;
else if (sc->rl_watchdog_timer == 0)
sc->rl_watchdog_timer = 5;
}
static void
@ -1280,6 +1279,8 @@ rl_tick(void *xsc)
mii = device_get_softc(sc->rl_miibus);
mii_tick(mii);
rl_watchdog(sc);
callout_reset(&sc->rl_stat_callout, hz, rl_tick, sc);
}
@ -1466,7 +1467,7 @@ rl_start_locked(struct ifnet *ifp)
RL_INC(sc->rl_cdata.cur_tx);
/* Set a timeout in case the chip goes out to lunch. */
ifp->if_timer = 5;
sc->rl_watchdog_timer = 5;
}
/*
@ -1693,20 +1694,20 @@ rl_ioctl(struct ifnet *ifp, u_long command, caddr_t data)
}
static void
rl_watchdog(struct ifnet *ifp)
rl_watchdog(struct rl_softc *sc)
{
struct rl_softc *sc = ifp->if_softc;
RL_LOCK(sc);
RL_LOCK_ASSERT(sc);
if_printf(ifp, "watchdog timeout\n");
ifp->if_oerrors++;
if (sc->rl_watchdog_timer == 0 || --sc->rl_watchdog_timer >0)
return;
device_printf(sc->rl_dev, "watchdog timeout\n");
sc->rl_ifp->if_oerrors++;
rl_txeof(sc);
rl_rxeof(sc);
rl_init_locked(sc);
RL_UNLOCK(sc);
}
/*
@ -1721,7 +1722,7 @@ rl_stop(struct rl_softc *sc)
RL_LOCK_ASSERT(sc);
ifp->if_timer = 0;
sc->rl_watchdog_timer = 0;
callout_stop(&sc->rl_stat_callout);
ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);

View file

@ -721,6 +721,7 @@ struct rl_softc {
struct rl_chain_data rl_cdata;
struct rl_list_data rl_ldata;
struct callout rl_stat_callout;
int rl_watchdog_timer;
struct mtx rl_mtx;
struct mbuf *rl_head;
struct mbuf *rl_tail;