svn commit: r314090 - stable/11/sys/net
Dexuan Cui
dexuan at FreeBSD.org
Wed Feb 22 08:02:26 UTC 2017
Author: dexuan
Date: Wed Feb 22 08:02:24 2017
New Revision: 314090
URL: https://svnweb.freebsd.org/changeset/base/314090
Log:
MFC: 312687, 312916
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/11/sys/net/if.c
stable/11/sys/net/if_var.h
Modified: stable/11/sys/net/if.c
==============================================================================
--- stable/11/sys/net/if.c Wed Feb 22 07:42:28 2017 (r314089)
+++ stable/11/sys/net/if.c Wed Feb 22 08:02:24 2017 (r314090)
@@ -2218,6 +2218,7 @@ void
if_down(struct ifnet *ifp)
{
+ EVENTHANDLER_INVOKE(ifnet_event, ifp, IFNET_EVENT_DOWN);
if_unroute(ifp, IFF_UP, AF_UNSPEC);
}
@@ -2230,6 +2231,7 @@ if_up(struct ifnet *ifp)
{
if_route(ifp, IFF_UP, AF_UNSPEC);
+ EVENTHANDLER_INVOKE(ifnet_event, ifp, IFNET_EVENT_UP);
}
/*
Modified: stable/11/sys/net/if_var.h
==============================================================================
--- stable/11/sys/net/if_var.h Wed Feb 22 07:42:28 2017 (r314089)
+++ stable/11/sys/net/if_var.h Wed Feb 22 08:02:24 2017 (r314090)
@@ -359,6 +359,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);
#endif /* _SYS_EVENTHANDLER_H_ */
/*
More information about the svn-src-stable
mailing list