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