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 <[email protected]>
@@ -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);