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

Reply via email to