Module Name:    src
Committed By:   matt
Date:           Mon Dec 14 00:52:10 UTC 2009

Modified Files:
        src/sys/dev/pci: if_msk.c

Log Message:
Only tick mii if the phy had a status change.


To generate a diff of this commit:
cvs rdiff -u -r1.28 -r1.29 src/sys/dev/pci/if_msk.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/dev/pci/if_msk.c
diff -u src/sys/dev/pci/if_msk.c:1.28 src/sys/dev/pci/if_msk.c:1.29
--- src/sys/dev/pci/if_msk.c:1.28	Sat Sep  5 14:09:55 2009
+++ src/sys/dev/pci/if_msk.c	Mon Dec 14 00:52:04 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: if_msk.c,v 1.28 2009/09/05 14:09:55 tsutsui Exp $ */
+/* $NetBSD: if_msk.c,v 1.29 2009/12/14 00:52:04 matt Exp $ */
 /*	$OpenBSD: if_msk.c,v 1.42 2007/01/17 02:43:02 krw Exp $	*/
 
 /*
@@ -52,7 +52,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: if_msk.c,v 1.28 2009/09/05 14:09:55 tsutsui Exp $");
+__KERNEL_RCSID(0, "$NetBSD: if_msk.c,v 1.29 2009/12/14 00:52:04 matt Exp $");
 
 #include "bpfilter.h"
 #include "rnd.h"
@@ -1219,8 +1219,9 @@
 	case PCI_MAPREG_TYPE_MEM | PCI_MAPREG_MEM_TYPE_64BIT:
 		if (pci_mapreg_map(pa, SK_PCI_LOMEM,
 				   memtype, 0, &sc->sk_btag, &sc->sk_bhandle,
-				   NULL, &size) == 0)
+				   NULL, &size) == 0) {
 			break;
+		}
 	default:
 		aprint_error(": can't map mem space\n");
 		return;
@@ -1821,10 +1822,15 @@
 {
 	struct sk_if_softc *sc_if = xsc_if;  
 	struct mii_data *mii = &sc_if->sk_mii;
+	uint16_t gpsr;
 	int s;
 
 	s = splnet();
-	mii_tick(mii);
+	gpsr = SK_YU_READ_2(sc_if, YUKON_GPSR);
+	if ((gpsr & YU_GPSR_MII_PHY_STC) != 0) {
+		SK_YU_WRITE_2(sc_if, YUKON_GPSR, YU_GPSR_MII_PHY_STC);
+		mii_tick(mii);
+	}
 	splx(s);
 
 	callout_schedule(&sc_if->sk_tick_ch, hz);

Reply via email to