Author: adrian
Date: Mon Oct 22 22:32:52 2012
New Revision: 241918
URL: http://svn.freebsd.org/changeset/base/241918

Log:
  Don't try to cache the page setting - always set the page before
  doing a switch register read/write.
  
  PR:           kern/172968

Modified:
  head/sys/dev/etherswitch/arswitch/arswitch_reg.c

Modified: head/sys/dev/etherswitch/arswitch/arswitch_reg.c
==============================================================================
--- head/sys/dev/etherswitch/arswitch/arswitch_reg.c    Mon Oct 22 22:29:48 
2012        (r241917)
+++ head/sys/dev/etherswitch/arswitch/arswitch_reg.c    Mon Oct 22 22:32:52 
2012        (r241918)
@@ -72,10 +72,17 @@ arswitch_split_setpage(device_t dev, uin
        *phy = (((addr) >> 6) & 0x07) | 0x10;
        *reg = ((addr) >> 1) & 0x1f;
 
-       if (sc->page != page) {
-               MDIO_WRITEREG(device_get_parent(dev), 0x18, 0, page);
-               sc->page = page;
-       }
+       /*
+        * The earlier code would only switch the page
+        * over if the page were different.  Experiments have
+        * shown that this is unstable.
+        *
+        * Hence, the page is always set here.
+        *
+        * See PR kern/172968
+        */
+       MDIO_WRITEREG(device_get_parent(dev), 0x18, 0, page);
+       sc->page = page;
 }
 
 /*
_______________________________________________
svn-src-head@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-head
To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"

Reply via email to