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);
 }
 
 /*
_______________________________________________
svn-src-stable-10@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-stable-10
To unsubscribe, send any mail to "svn-src-stable-10-unsubscr...@freebsd.org"

Reply via email to