Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 23 Feb 2017 06:57:19 +0000 (UTC)
From:      Dexuan Cui <dexuan@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-10@freebsd.org
Subject:   svn commit: r314122 - stable/10/sys/net
Message-ID:  <201702230657.v1N6vJ7Q013058@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: dexuan
Date: Thu Feb 23 06:57:18 2017
New Revision: 314122
URL: https://svnweb.freebsd.org/changeset/base/314122

Log:
  MFC: r312687, r312916
  
  Approved by:	sephe (mentor)
  
  r312687
      ifnet: introduce event handlers for ifup/ifdown events
  
      Hyper-V's NIC SR-IOV implementation needs a Hyper-V synthetic NIC and
      a VF NIC to work together, mainly to support seamless live migration.
  
      When the VF device becomes UP (or DOWN), the synthetic NIC driver needs
      to switch the data path from the synthetic NIC to the VF (or the opposite).
  
      So the synthetic NIC driver needs to know when a VF device is becoming
      UP or DOWN and hence the patch is made.
  
      Reviewed by:	sephe
      Approved by:	sephe (mentor)
      Sponsored by:	Microsoft
      Differential Revision:	https://reviews.freebsd.org/D8963
  
  r312916
      ifnet: move the new ifnet_event EVENTHANDLER_DECLARE to net/if_var.h
  
      Thank glebius for pointing this out:
      "The network stuff shall not be added to sys/eventhandler.h"
  
      Reviewed by:	David_A_Bright_DELL.com, sephe, glebius
      Approved by:	sephe (mentor)
      Sponsored by:	Microsoft
      Differential Revision:	https://reviews.freebsd.org/D9345

Modified:
  stable/10/sys/net/if.c
  stable/10/sys/net/if_var.h

Modified: stable/10/sys/net/if.c
==============================================================================
--- stable/10/sys/net/if.c	Thu Feb 23 06:49:46 2017	(r314121)
+++ stable/10/sys/net/if.c	Thu Feb 23 06:57:18 2017	(r314122)
@@ -2183,6 +2183,7 @@ void
 if_down(struct ifnet *ifp)
 {
 
+	EVENTHANDLER_INVOKE(ifnet_event, ifp, IFNET_EVENT_DOWN);
 	if_unroute(ifp, IFF_UP, AF_UNSPEC);
 }
 
@@ -2195,6 +2196,7 @@ if_up(struct ifnet *ifp)
 {
 
 	if_route(ifp, IFF_UP, AF_UNSPEC);
+	EVENTHANDLER_INVOKE(ifnet_event, ifp, IFNET_EVENT_UP);
 }
 
 /*

Modified: stable/10/sys/net/if_var.h
==============================================================================
--- stable/10/sys/net/if_var.h	Thu Feb 23 06:49:46 2017	(r314121)
+++ stable/10/sys/net/if_var.h	Thu Feb 23 06:57:18 2017	(r314122)
@@ -424,6 +424,11 @@ EVENTHANDLER_DECLARE(ifnet_departure_eve
 /* Interface link state change event */
 typedef void (*ifnet_link_event_handler_t)(void *, struct ifnet *, int);
 EVENTHANDLER_DECLARE(ifnet_link_event, ifnet_link_event_handler_t);
+/* Interface up/down event */
+#define IFNET_EVENT_UP		0
+#define IFNET_EVENT_DOWN	1
+typedef void (*ifnet_event_fn)(void *, struct ifnet *ifp, int event);
+EVENTHANDLER_DECLARE(ifnet_event, ifnet_event_fn);
 
 /*
  * interface groups



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201702230657.v1N6vJ7Q013058>