diff options
author | yongari <yongari@FreeBSD.org> | 2011-02-15 18:16:04 +0000 |
---|---|---|
committer | yongari <yongari@FreeBSD.org> | 2011-02-15 18:16:04 +0000 |
commit | e7f9998f26c990ff9627f73504481263bcebf8a8 (patch) | |
tree | 4d220ee7f31ea057504ccdeefe2e2001eee78034 /sys/dev/fxp/if_fxp.c | |
parent | d1c8f88a1f48f2661eed5d213010713e0ec67a87 (diff) | |
download | FreeBSD-src-e7f9998f26c990ff9627f73504481263bcebf8a8.zip FreeBSD-src-e7f9998f26c990ff9627f73504481263bcebf8a8.tar.gz |
Fix a regression introduced in r215906. The change made in r215906
caused link re-negotiation whenever application joins or leaves a
multicast group. If driver is running, it would have established a
link so there is no need to start re-negotiation. The re-negotiation
broke established link which in turn stopped multicast application
working while re-negotiation is in progress.
PR: kern/154667
MFC after: 1 week
Diffstat (limited to 'sys/dev/fxp/if_fxp.c')
-rw-r--r-- | sys/dev/fxp/if_fxp.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/dev/fxp/if_fxp.c b/sys/dev/fxp/if_fxp.c index fe9c0bd..51e8ef5 100644 --- a/sys/dev/fxp/if_fxp.c +++ b/sys/dev/fxp/if_fxp.c @@ -2823,8 +2823,10 @@ fxp_ioctl(struct ifnet *ifp, u_long command, caddr_t data) case SIOCADDMULTI: case SIOCDELMULTI: + FXP_LOCK(sc); if ((ifp->if_drv_flags & IFF_DRV_RUNNING) != 0) - fxp_init(sc); + fxp_init_body(sc, 0); + FXP_UNLOCK(sc); break; case SIOCSIFMEDIA: |