On Sun, Mar 08, 2009 at 09:52:19PM -0400, Steve Wills wrote:
> Hi,
> 
> Sorry for the late reply.
> 
> On Mar 3, 2009, at 7:07 AM, Pyun YongHyeon wrote:
> >Ok, when you plug UTP cable can you see "re0: link state changed to
> >UP" in dmesg output? Or if you unplug the cable, you should see
> >"re0: link state changed to DOWN"(With "tail -f /var/log/message",
> >you can easily check this.)
> 
> Nope.
> 
> >
> >If this is not the case something is wrong on RTL8168D. Since
> >you've said re0 works for a short time, can you see "re0: link
> >state changed to DOWN" on your dmesg output right before seeing
> >"re0: PHY read failed" message?
> 
> After boot and DHCP, it works for about a minute, then I see "PHY read  
> failed" for a few seconds, network continues to work, then I see "link  
> state changed to DOWN", network stops working and frequency of read  
> failed message increases. Unplugging the cable and plugging it back in  
> doesn't change anything or cause the system to log any messages beyond  
> "PHY read failed".
> 
> >I've also attached patch which may apply to your case. Would you
> >give it spin? Note, the patch was generated against CURRENT, so
> >you should use re(4) in CURRENT. Just save your old re(4)/rl(4)
> >files and download if_re.c, if_rl.c and if_rlreg.h from CURRENT
> >and apply the patch.
> ><re.RTL8168D.patch>
> 
> Unfortunately, for me, this patch doesn't change things.
> 

Ok, please try again with attached patch.
Index: sys/dev/re/if_re.c
===================================================================
--- sys/dev/re/if_re.c  (revision 189551)
+++ sys/dev/re/if_re.c  (working copy)
@@ -1266,6 +1266,8 @@
                /* FALLTHROUGH */
        case RL_HWREV_8168CP:
        case RL_HWREV_8168D:
+               if (hw_rev->rl_rev == RL_HWREV_8168D)
+                       sc->rl_flags |= 0x10000;
                sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PAR |
                    RL_FLAG_DESCV2 | RL_FLAG_MACSTAT | RL_FLAG_CMDSTOP;
                /*
@@ -2061,6 +2063,8 @@
 
        RL_LOCK_ASSERT(sc);
 
+       if ((sc->rl_flags & 0x10000) != 0)
+               re_miibus_writereg(sc->rl_dev, 1, 0x1f, 0);
        mii = device_get_softc(sc->rl_miibus);
        mii_tick(mii);
        if ((sc->rl_flags & RL_FLAG_LINK) == 0)
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[email protected]"

Reply via email to