Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys lagg: Register lagg_linkstate_changed to link-state chan...



details:   https://anonhg.NetBSD.org/src/rev/80b8f2846827
branches:  trunk
changeset: 987506:80b8f2846827
user:      yamaguchi <yamaguchi%NetBSD.org@localhost>
date:      Thu Sep 30 03:39:39 2021 +0000

description:
lagg: Register lagg_linkstate_changed to link-state change hook

diffstat:

 sys/net/if.c                        |  14 ++------------
 sys/net/lagg/if_lagg.c              |  15 ++++++++++++---
 sys/net/lagg/if_laggproto.h         |   3 ++-
 sys/net/lagg/if_laggvar.h           |   3 +--
 sys/rump/librump/rumpnet/net_stub.c |   5 ++---
 5 files changed, 19 insertions(+), 21 deletions(-)

diffs (167 lines):

diff -r aff05007e01f -r 80b8f2846827 sys/net/if.c
--- a/sys/net/if.c      Thu Sep 30 03:35:55 2021 +0000
+++ b/sys/net/if.c      Thu Sep 30 03:39:39 2021 +0000
@@ -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 @@
 #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 (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) {
diff -r aff05007e01f -r 80b8f2846827 sys/net/lagg/if_lagg.c
--- a/sys/net/lagg/if_lagg.c    Thu Sep 30 03:35:55 2021 +0000
+++ b/sys/net/lagg/if_lagg.c    Thu Sep 30 03:39:39 2021 +0000
@@ -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 <reyk%openbsd.org@localhost>
@@ -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 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 @@
        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 @@
 
 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 @@
        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 @@
 }
 
 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;
diff -r aff05007e01f -r 80b8f2846827 sys/net/lagg/if_laggproto.h
--- a/sys/net/lagg/if_laggproto.h       Thu Sep 30 03:35:55 2021 +0000
+++ b/sys/net/lagg/if_laggproto.h       Thu Sep 30 03:39:39 2021 +0000
@@ -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_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 */
diff -r aff05007e01f -r 80b8f2846827 sys/net/lagg/if_laggvar.h
--- a/sys/net/lagg/if_laggvar.h Thu Sep 30 03:35:55 2021 +0000
+++ b/sys/net/lagg/if_laggvar.h Thu Sep 30 03:39:39 2021 +0000
@@ -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 *,
diff -r aff05007e01f -r 80b8f2846827 sys/rump/librump/rumpnet/net_stub.c
--- a/sys/rump/librump/rumpnet/net_stub.c       Thu Sep 30 03:35:55 2021 +0000
+++ b/sys/rump/librump/rumpnet/net_stub.c       Thu Sep 30 03:39:39 2021 +0000
@@ -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 @@
 /* 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);



Home | Main Index | Thread Index | Old Index