Module Name: src Committed By: roy Date: Tue Oct 20 18:17:58 UTC 2020
Modified Files: src/sys/arch/mac68k/dev: if_mc.c src/sys/arch/macppc/dev: am79c950.c src/sys/dev/ic: am7990.c am79900.c Log Message: le(4): add link status change reporting to drivers which support it Reviewed by thorpej@ Tested by martin@ To generate a diff of this commit: cvs rdiff -u -r1.55 -r1.56 src/sys/arch/mac68k/dev/if_mc.c cvs rdiff -u -r1.49 -r1.50 src/sys/arch/macppc/dev/am79c950.c cvs rdiff -u -r1.82 -r1.83 src/sys/dev/ic/am7990.c cvs rdiff -u -r1.30 -r1.31 src/sys/dev/ic/am79900.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/arch/mac68k/dev/if_mc.c diff -u src/sys/arch/mac68k/dev/if_mc.c:1.55 src/sys/arch/mac68k/dev/if_mc.c:1.56 --- src/sys/arch/mac68k/dev/if_mc.c:1.55 Thu Jan 30 06:30:52 2020 +++ src/sys/arch/mac68k/dev/if_mc.c Tue Oct 20 18:17:58 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: if_mc.c,v 1.55 2020/01/30 06:30:52 martin Exp $ */ +/* $NetBSD: if_mc.c,v 1.56 2020/10/20 18:17:58 roy Exp $ */ /*- * Copyright (c) 1997 David Huang <k...@azeotrope.org> @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_mc.c,v 1.55 2020/01/30 06:30:52 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_mc.c,v 1.56 2020/10/20 18:17:58 roy Exp $"); #include "opt_ddb.h" #include "opt_inet.h" @@ -455,6 +455,7 @@ struct mc_softc *sc = arg; * Pretend we have carrier; if we don't this will be cleared * shortly. */ + const int ocarrier = sc->sc_havecarrier; sc->sc_havecarrier = 1; if (ir & XMTINT) @@ -462,6 +463,10 @@ struct mc_softc *sc = arg; if (ir & RCVINT) mc_rint(sc); + + if (sc->sc_havecarrier != ocarrier) + if_link_state_change(&sc->sc_if, + sc->sc_havecarrier ? LINK_STATE_UP : LINK_STATE_DOWN); } integrate void Index: src/sys/arch/macppc/dev/am79c950.c diff -u src/sys/arch/macppc/dev/am79c950.c:1.49 src/sys/arch/macppc/dev/am79c950.c:1.50 --- src/sys/arch/macppc/dev/am79c950.c:1.49 Tue Feb 4 13:47:34 2020 +++ src/sys/arch/macppc/dev/am79c950.c Tue Oct 20 18:17:58 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: am79c950.c,v 1.49 2020/02/04 13:47:34 martin Exp $ */ +/* $NetBSD: am79c950.c,v 1.50 2020/10/20 18:17:58 roy Exp $ */ /*- * Copyright (c) 1997 David Huang <k...@bga.com> @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: am79c950.c,v 1.49 2020/02/04 13:47:34 martin Exp $"); +__KERNEL_RCSID(0, "$NetBSD: am79c950.c,v 1.50 2020/10/20 18:17:58 roy Exp $"); #include "opt_inet.h" @@ -458,6 +458,7 @@ mcintr(void *arg) * Pretend we have carrier; if we don't this will be cleared * shortly. */ + const int ocarrier = sc->sc_havecarrier; sc->sc_havecarrier = 1; if (ir & XMTINT) @@ -466,6 +467,10 @@ mcintr(void *arg) if (ir & RCVINT) mc_rint(sc); + if (sc->sc_havecarrier != ocarrier) + if_link_state_change(&sc->sc_if, + sc->sc_havecarrier ? LINK_STATE_UP : LINK_STATE_DOWN); + return 1; } Index: src/sys/dev/ic/am7990.c diff -u src/sys/dev/ic/am7990.c:1.82 src/sys/dev/ic/am7990.c:1.83 --- src/sys/dev/ic/am7990.c:1.82 Thu Mar 19 02:31:28 2020 +++ src/sys/dev/ic/am7990.c Tue Oct 20 18:17:58 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: am7990.c,v 1.82 2020/03/19 02:31:28 thorpej Exp $ */ +/* $NetBSD: am7990.c,v 1.83 2020/10/20 18:17:58 roy Exp $ */ /*- * Copyright (c) 1997, 1998 The NetBSD Foundation, Inc. @@ -65,7 +65,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: am7990.c,v 1.82 2020/03/19 02:31:28 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: am7990.c,v 1.83 2020/10/20 18:17:58 roy Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -435,6 +435,7 @@ am7990_intr(void *arg) * Pretend we have carrier; if we don't this will be cleared * shortly. */ + const int ocarrier = sc->sc_havecarrier; sc->sc_havecarrier = 1; if (isr & LE_C0_RINT) @@ -442,6 +443,10 @@ am7990_intr(void *arg) if (isr & LE_C0_TINT) am7990_tint(sc); + if (sc->sc_havecarrier != ocarrier) + if_link_state_change(ifp, + sc->sc_havecarrier ? LINK_STATE_UP : LINK_STATE_DOWN); + rnd_add_uint32(&sc->rnd_source, isr); return (1); Index: src/sys/dev/ic/am79900.c diff -u src/sys/dev/ic/am79900.c:1.30 src/sys/dev/ic/am79900.c:1.31 --- src/sys/dev/ic/am79900.c:1.30 Thu Mar 19 02:31:28 2020 +++ src/sys/dev/ic/am79900.c Tue Oct 20 18:17:58 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: am79900.c,v 1.30 2020/03/19 02:31:28 thorpej Exp $ */ +/* $NetBSD: am79900.c,v 1.31 2020/10/20 18:17:58 roy Exp $ */ /*- * Copyright (c) 1997 The NetBSD Foundation, Inc. @@ -103,7 +103,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: am79900.c,v 1.30 2020/03/19 02:31:28 thorpej Exp $"); +__KERNEL_RCSID(0, "$NetBSD: am79900.c,v 1.31 2020/10/20 18:17:58 roy Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -456,6 +456,7 @@ am79900_intr(void *arg) * Pretend we have carrier; if we don't this will be cleared * shortly. */ + const int ocarrier = sc->sc_havecarrier; sc->sc_havecarrier = 1; if (isr & LE_C0_RINT) @@ -463,6 +464,10 @@ am79900_intr(void *arg) if (isr & LE_C0_TINT) am79900_tint(sc); + if (sc->sc_havecarrier != ocarrier) + if_link_state_change(ifp, + sc->sc_havecarrier ? LINK_STATE_UP : LINK_STATE_DOWN); + rnd_add_uint32(&sc->rnd_source, isr); return (1);