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);

Reply via email to