svn commit: r283100 - stable/10/sys/dev/hyperv/netvsc
Xin LI
delphij at FreeBSD.org
Tue May 19 08:00:40 UTC 2015
Author: delphij
Date: Tue May 19 08:00:39 2015
New Revision: 283100
URL: https://svnweb.freebsd.org/changeset/base/283100
Log:
MFC r279819:
Fix CARP when in use in a HyperV environment:
- Bump link state when stopping or starting the interface;
- Don't handle SIOCGIFADDR specially, similar to r277103.
This change is based on a previous revision from Andy Zhang
(Microsoft) who did the diagnostic work and many thanks to
them for their help in supporting the HyperV work.
PR: kern/187203
Modified:
stable/10/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
Directory Properties:
stable/10/ (props changed)
Modified: stable/10/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
==============================================================================
--- stable/10/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c Tue May 19 06:45:56 2015 (r283099)
+++ stable/10/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c Tue May 19 08:00:39 2015 (r283100)
@@ -738,7 +738,14 @@ hn_ioctl(struct ifnet *ifp, u_long cmd,
switch(cmd) {
case SIOCSIFADDR:
- case SIOCGIFADDR:
+#ifdef INET
+ if (ifa->ifa_addr->sa_family == AF_INET) {
+ ifp->if_flags |= IFF_UP;
+ if (!(ifp->if_drv_flags & IFF_DRV_RUNNING))
+ hn_ifinit(sc);
+ arp_ifinit(ifp, ifa);
+ } else
+#endif
error = ether_ioctl(ifp, cmd, data);
break;
case SIOCSIFMTU:
@@ -902,6 +909,7 @@ hn_stop(hn_softc_t *sc)
printf(" Closing Device ...\n");
ifp->if_drv_flags &= ~(IFF_DRV_RUNNING | IFF_DRV_OACTIVE);
+ if_link_state_change(ifp, LINK_STATE_DOWN);
sc->hn_initdone = 0;
ret = hv_rf_on_close(device_ctx);
@@ -951,6 +959,7 @@ hn_ifinit_locked(hn_softc_t *sc)
}
ifp->if_drv_flags |= IFF_DRV_RUNNING;
ifp->if_drv_flags &= ~IFF_DRV_OACTIVE;
+ if_link_state_change(ifp, LINK_STATE_UP);
}
/*
More information about the svn-src-stable-10
mailing list