summaryrefslogtreecommitdiffstats
path: root/sys/dev/vr/if_vr.c
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2010-08-24 18:40:11 +0000
committeryongari <yongari@FreeBSD.org>2010-08-24 18:40:11 +0000
commit25f4531fc3950b288e347f01e7029aba0f8ec357 (patch)
treedf5d8c56f9d63631a1152b2d499ecc217a0a7ab0 /sys/dev/vr/if_vr.c
parent42ab9c39ce168ec714dc35adeb7182e1669f654e (diff)
downloadFreeBSD-src-25f4531fc3950b288e347f01e7029aba0f8ec357.zip
FreeBSD-src-25f4531fc3950b288e347f01e7029aba0f8ec357.tar.gz
Remove unnecessary controller reinitialization.
CAM filter handling was rewritten long time ago so it should not require controller reinitialization. PR: kern/87506
Diffstat (limited to 'sys/dev/vr/if_vr.c')
-rw-r--r--sys/dev/vr/if_vr.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/vr/if_vr.c b/sys/dev/vr/if_vr.c
index 954024d..21a74a5 100644
--- a/sys/dev/vr/if_vr.c
+++ b/sys/dev/vr/if_vr.c
@@ -1560,6 +1560,7 @@ vr_tick(void *xsc)
sc->vr_stat.num_restart++;
vr_stop(sc);
vr_reset(sc);
+ sc->vr_ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
vr_init_locked(sc);
sc->vr_flags &= ~VR_F_RESTART;
}
@@ -2016,6 +2017,9 @@ vr_init_locked(struct vr_softc *sc)
ifp = sc->vr_ifp;
mii = device_get_softc(sc->vr_miibus);
+ if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0)
+ return;
+
/* Cancel pending I/O and free all RX/TX buffers. */
vr_stop(sc);
vr_reset(sc);
@@ -2287,6 +2291,7 @@ vr_watchdog(struct vr_softc *sc)
if_printf(sc->vr_ifp, "watchdog timeout "
"(missed link)\n");
ifp->if_oerrors++;
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
vr_init_locked(sc);
return;
}
@@ -2296,6 +2301,7 @@ vr_watchdog(struct vr_softc *sc)
vr_stop(sc);
vr_reset(sc);
+ ifp->if_drv_flags &= ~IFF_DRV_RUNNING;
vr_init_locked(sc);
if (!IFQ_DRV_IS_EMPTY(&ifp->if_snd))
OpenPOWER on IntegriCloud