Add simple suspend and resume methods. We call em_stop() on suspend and
em_init() on resume. With this change the network is ready right after resume, without half minute lag. Tested by: Jacques Garrigue
This commit is contained in:
parent
06490ba975
commit
0b6169c0fa
@ -138,8 +138,11 @@ static int em_probe(device_t);
|
||||
static int em_attach(device_t);
|
||||
static int em_detach(device_t);
|
||||
static int em_shutdown(device_t);
|
||||
static int em_suspend(device_t);
|
||||
static int em_resume(device_t);
|
||||
static void em_intr(void *);
|
||||
static void em_start(struct ifnet *);
|
||||
static void em_start_locked(struct ifnet *ifp);
|
||||
static int em_ioctl(struct ifnet *, u_long, caddr_t);
|
||||
static void em_watchdog(struct ifnet *);
|
||||
static void em_init(void *);
|
||||
@ -220,6 +223,8 @@ static device_method_t em_methods[] = {
|
||||
DEVMETHOD(device_attach, em_attach),
|
||||
DEVMETHOD(device_detach, em_detach),
|
||||
DEVMETHOD(device_shutdown, em_shutdown),
|
||||
DEVMETHOD(device_suspend, em_suspend),
|
||||
DEVMETHOD(device_resume, em_resume),
|
||||
{0, 0}
|
||||
};
|
||||
|
||||
@ -602,6 +607,41 @@ em_shutdown(device_t dev)
|
||||
return(0);
|
||||
}
|
||||
|
||||
/*
|
||||
* Suspend/resume device methods.
|
||||
*/
|
||||
static int
|
||||
em_suspend(device_t dev)
|
||||
{
|
||||
struct adapter *adapter = device_get_softc(dev);
|
||||
|
||||
EM_LOCK(adapter);
|
||||
em_stop(adapter);
|
||||
EM_UNLOCK(adapter);
|
||||
|
||||
return bus_generic_suspend(dev);
|
||||
}
|
||||
|
||||
static int
|
||||
em_resume(device_t dev)
|
||||
{
|
||||
struct adapter *adapter = device_get_softc(dev);
|
||||
struct ifnet *ifp;
|
||||
|
||||
EM_LOCK(adapter);
|
||||
ifp = adapter->ifp;
|
||||
if (ifp->if_flags & IFF_UP) {
|
||||
em_init_locked(adapter);
|
||||
if (ifp->if_drv_flags & IFF_DRV_RUNNING)
|
||||
em_start_locked(ifp);
|
||||
}
|
||||
|
||||
em_init_locked(adapter);
|
||||
EM_UNLOCK(adapter);
|
||||
|
||||
return bus_generic_resume(dev);
|
||||
}
|
||||
|
||||
|
||||
/*********************************************************************
|
||||
* Transmit entry point
|
||||
|
Loading…
Reference in New Issue
Block a user