summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorloos <loos@FreeBSD.org>2013-08-29 12:48:12 +0000
committerloos <loos@FreeBSD.org>2013-08-29 12:48:12 +0000
commitfdc2e5ebcd41ab03ee8d2789bc226c759b52134e (patch)
tree595587a5351ae16c81e09ce5c85242b8e89cd4da
parent4cffb47bd399be6c827ca323e6b9072cd1aa6c45 (diff)
downloadFreeBSD-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)
-rw-r--r--sys/mips/atheros/if_arge.c3
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) {
OpenPOWER on IntegriCloud