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