7.1-R to RELENG_7 upgrade breaks re nic

Pyun YongHyeon pyunyh at gmail.com
Thu Mar 19 18:21:55 PDT 2009


On Mon, Mar 09, 2009 at 12:56:13PM +0900, Pyun YongHyeon wrote:
> 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.

Any progress here?
I've checked changes made in RELENG7 but I failed to see what
revision broke RTL8168D support. Can you narrow down which revision 
broke RTL8168D support if previous patch have no effect?

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



More information about the freebsd-stable mailing list