summaryrefslogtreecommitdiffstats
path: root/sys/dev/fxp
diff options
context:
space:
mode:
authoryongari <yongari@FreeBSD.org>2011-02-15 18:16:04 +0000
committeryongari <yongari@FreeBSD.org>2011-02-15 18:16:04 +0000
commite7f9998f26c990ff9627f73504481263bcebf8a8 (patch)
tree4d220ee7f31ea057504ccdeefe2e2001eee78034 /sys/dev/fxp
parentd1c8f88a1f48f2661eed5d213010713e0ec67a87 (diff)
downloadFreeBSD-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')
-rw-r--r--sys/dev/fxp/if_fxp.c4
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:
OpenPOWER on IntegriCloud