Module Name: src Committed By: yamaguchi Date: Thu Sep 30 03:39:39 UTC 2021
Modified Files: src/sys/net: if.c src/sys/net/lagg: if_lagg.c if_laggproto.h if_laggvar.h src/sys/rump/librump/rumpnet: net_stub.c Log Message: lagg: Register lagg_linkstate_changed to link-state change hook To generate a diff of this commit: cvs rdiff -u -r1.493 -r1.494 src/sys/net/if.c cvs rdiff -u -r1.6 -r1.7 src/sys/net/lagg/if_lagg.c cvs rdiff -u -r1.3 -r1.4 src/sys/net/lagg/if_laggproto.h cvs rdiff -u -r1.2 -r1.3 src/sys/net/lagg/if_laggvar.h cvs rdiff -u -r1.44 -r1.45 src/sys/rump/librump/rumpnet/net_stub.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/net/if.c diff -u src/sys/net/if.c:1.493 src/sys/net/if.c:1.494 --- src/sys/net/if.c:1.493 Thu Sep 30 03:35:55 2021 +++ src/sys/net/if.c Thu Sep 30 03:39:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: if.c,v 1.493 2021/09/30 03:35:55 yamaguchi Exp $ */ +/* $NetBSD: if.c,v 1.494 2021/09/30 03:39:39 yamaguchi Exp $ */ /*- * Copyright (c) 1999, 2000, 2001, 2008 The NetBSD Foundation, Inc. @@ -90,7 +90,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.493 2021/09/30 03:35:55 yamaguchi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if.c,v 1.494 2021/09/30 03:39:39 yamaguchi Exp $"); #if defined(_KERNEL_OPT) #include "opt_inet.h" @@ -161,11 +161,6 @@ __KERNEL_RCSID(0, "$NetBSD: if.c,v 1.493 #include <netinet/ip_carp.h> #endif -#include "lagg.h" -#if NLAGG > 0 -#include <net/lagg/if_laggvar.h> -#endif - #include <compat/sys/sockio.h> MALLOC_DEFINE(M_IFADDR, "ifaddr", "interface address"); @@ -2410,11 +2405,6 @@ if_link_state_change_process(struct ifne if (ifp->if_link_state_changed != NULL) ifp->if_link_state_changed(ifp, link_state); -#if NLAGG > 0 - if (ifp->if_type == IFT_IEEE8023ADLAG) - lagg_linkstate_changed(ifp); -#endif - simplehook_dohooks(ifp->if_linkstate_hooks); DOMAIN_FOREACH(dp) { Index: src/sys/net/lagg/if_lagg.c diff -u src/sys/net/lagg/if_lagg.c:1.6 src/sys/net/lagg/if_lagg.c:1.7 --- src/sys/net/lagg/if_lagg.c:1.6 Tue Jul 13 09:00:26 2021 +++ src/sys/net/lagg/if_lagg.c Thu Sep 30 03:39:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: if_lagg.c,v 1.6 2021/07/13 09:00:26 ozaki-r Exp $ */ +/* $NetBSD: if_lagg.c,v 1.7 2021/09/30 03:39:39 yamaguchi Exp $ */ /* * Copyright (c) 2005, 2006 Reyk Floeter <r...@openbsd.org> @@ -20,7 +20,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_lagg.c,v 1.6 2021/07/13 09:00:26 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_lagg.c,v 1.7 2021/09/30 03:39:39 yamaguchi Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -147,6 +147,7 @@ static void lagg_start(struct ifnet *); static int lagg_media_change(struct ifnet *); static void lagg_media_status(struct ifnet *, struct ifmediareq *); static int lagg_vlan_cb(struct ethercom *, uint16_t, bool); +static void lagg_linkstate_changed(void *); static struct lagg_softc * lagg_softc_alloc(enum lagg_iftypes); static void lagg_softc_free(struct lagg_softc *); @@ -1970,6 +1971,8 @@ lagg_addport_locked(struct lagg_softc *s lp->lp_ifcapenable = ifp_port->if_capenable; lp->lp_mtu = mtu_port; lp->lp_prio = LAGG_PORT_PRIO; + lp->lp_linkstate_hook = if_linkstate_change_establish(ifp_port, + lagg_linkstate_changed, ifp_port); psref_target_init(&lp->lp_psref, lagg_port_psref_class); IFNET_LOCK(ifp_port); @@ -2011,6 +2014,8 @@ remove_port: restore_lladdr: lagg_lladdr_unset(sc, lp, if_type); + if_linkstate_change_disestablish(ifp_port, + lp->lp_linkstate_hook, NULL); psref_target_destroy(&lp->lp_psref, lagg_port_psref_class); IFNET_LOCK(ifp_port); @@ -2063,6 +2068,9 @@ lagg_delport_locked(struct lagg_softc *s atomic_store_release(&ifp_port->if_lagg, NULL); pserialize_perform(sc->sc_psz); + if_linkstate_change_disestablish(ifp_port, + lp->lp_linkstate_hook, NULL); + lagg_proto_stopport(sc, lp); psref_target_destroy(&lp->lp_psref, lagg_port_psref_class); @@ -2338,8 +2346,9 @@ lagg_ifdetach(struct ifnet *ifp_port) } void -lagg_linkstate_changed(struct ifnet *ifp) +lagg_linkstate_changed(void *xifp) { + struct ifnet *ifp = xifp; struct lagg_port *lp; struct psref psref; int s, bound; Index: src/sys/net/lagg/if_laggproto.h diff -u src/sys/net/lagg/if_laggproto.h:1.3 src/sys/net/lagg/if_laggproto.h:1.4 --- src/sys/net/lagg/if_laggproto.h:1.3 Mon May 24 06:24:20 2021 +++ src/sys/net/lagg/if_laggproto.h Thu Sep 30 03:39:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: if_laggproto.h,v 1.3 2021/05/24 06:24:20 yamaguchi Exp $ */ +/* $NetBSD: if_laggproto.h,v 1.4 2021/09/30 03:39:39 yamaguchi Exp $ */ /* * Copyright (c) 2021 Internet Initiative Japan Inc. @@ -68,6 +68,7 @@ struct lagg_port { struct lagg_softc *lp_softc; /* parent lagg */ void *lp_proto_ctx; bool lp_detaching; + void *lp_linkstate_hook; uint32_t lp_prio; /* port priority */ uint32_t lp_flags; /* port flags */ Index: src/sys/net/lagg/if_laggvar.h diff -u src/sys/net/lagg/if_laggvar.h:1.2 src/sys/net/lagg/if_laggvar.h:1.3 --- src/sys/net/lagg/if_laggvar.h:1.2 Mon May 24 06:08:28 2021 +++ src/sys/net/lagg/if_laggvar.h Thu Sep 30 03:39:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: if_laggvar.h,v 1.2 2021/05/24 06:08:28 yamaguchi Exp $ */ +/* $NetBSD: if_laggvar.h,v 1.3 2021/09/30 03:39:39 yamaguchi Exp $ */ /* * Copyright (c) 2021 Internet Initiative Japan Inc. @@ -30,7 +30,6 @@ #define _NET_LAGG_IF_LAGGVAR_H_ void lagg_ifdetach(struct ifnet *); -void lagg_linkstate_changed(struct ifnet *); extern struct mbuf * (*lagg_input_ethernet_p)(struct ifnet *, Index: src/sys/rump/librump/rumpnet/net_stub.c diff -u src/sys/rump/librump/rumpnet/net_stub.c:1.44 src/sys/rump/librump/rumpnet/net_stub.c:1.45 --- src/sys/rump/librump/rumpnet/net_stub.c:1.44 Thu Sep 30 03:35:55 2021 +++ src/sys/rump/librump/rumpnet/net_stub.c Thu Sep 30 03:39:39 2021 @@ -1,4 +1,4 @@ -/* $NetBSD: net_stub.c,v 1.44 2021/09/30 03:35:55 yamaguchi Exp $ */ +/* $NetBSD: net_stub.c,v 1.45 2021/09/30 03:39:39 yamaguchi Exp $ */ /* * Copyright (c) 2008 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: net_stub.c,v 1.44 2021/09/30 03:35:55 yamaguchi Exp $"); +__KERNEL_RCSID(0, "$NetBSD: net_stub.c,v 1.45 2021/09/30 03:39:39 yamaguchi Exp $"); #include <sys/mutex.h> #include <sys/param.h> @@ -110,7 +110,6 @@ __weak_alias(key_sp_unref,rumpnet_stub); /* lagg */ __weak_alias(lagg_ifdetach,rumpnet_stub); __weak_alias(lagg_input_ethernet,rumpnet_stub); -__weak_alias(lagg_linkstate_changed,rumpnet_stub); /* altq */ int (*altq_input)(struct mbuf *, int);