diff options
author | loos <loos@FreeBSD.org> | 2013-08-29 12:48:12 +0000 |
---|---|---|
committer | loos <loos@FreeBSD.org> | 2013-08-29 12:48:12 +0000 |
commit | fdc2e5ebcd41ab03ee8d2789bc226c759b52134e (patch) | |
tree | 595587a5351ae16c81e09ce5c85242b8e89cd4da /sys/mips | |
parent | 4cffb47bd399be6c827ca323e6b9072cd1aa6c45 (diff) | |
download | FreeBSD-src-fdc2e5ebcd41ab03ee8d2789bc226c759b52134e.zip FreeBSD-src-fdc2e5ebcd41ab03ee8d2789bc226c759b52134e.tar.gz |
Prevent the full restart cycle every time arge_start() is called. Only
(re)start the interface when it is down. This change fix a race with
BOOTP where the response packet is lost because the interface is being
reset by a netmask change right after send the packet.
PR: 178318
Approved by: adrian (mentor)
Diffstat (limited to 'sys/mips')
-rw-r--r-- | sys/mips/atheros/if_arge.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/mips/atheros/if_arge.c b/sys/mips/atheros/if_arge.c index 6487ea4..21b945f 100644 --- a/sys/mips/atheros/if_arge.c +++ b/sys/mips/atheros/if_arge.c @@ -1019,7 +1019,8 @@ arge_init_locked(struct arge_softc *sc) ARGE_LOCK_ASSERT(sc); - arge_stop(sc); + if ((ifp->if_flags & IFF_UP) && (ifp->if_drv_flags & IFF_DRV_RUNNING)) + return; /* Init circular RX list. */ if (arge_rx_ring_init(sc) != 0) { |