Unable to get RealTek 8139C+ to work with re(4) under FreeBSD
6.1
Pyun YongHyeon
pyunyh at gmail.com
Thu Aug 17 02:26:25 UTC 2006
On Mon, Aug 14, 2006 at 08:03:35PM +0800, Dinesh Nair wrote:
>
>
> On 08/14/06 19:09 Pyun YongHyeon said the following:
> >really sucks and need much more CPU power to saturate the link.
> >So I don't think it's good idea to make rl(4) serve 8139C+.
>
> perhaps, but re(4) doesn't work at the moment on this chipset, and i'd
> rather have something which works, albeit a little poorly, than something
> which doesn't.
>
> >Yes. What `ident /boot/kernel/if_re.ko` shows?
>
> $FreeBSD: src/sys/dev/re/if_re.c,v 1.46.2.19 2006/08/07 02:38:07 yongari
> Exp $
>
> and the latest if_rlreg.c which i pulled down shows,
>
> $FreeBSD: src/sys/pci/if_rlreg.h,v 1.51.2.7 2006/08/01 17:36:50 wpaul Exp $
>
> i'm not using the loadable modules though, and am building the re(4) device
> into the kernel directly.
>
> the symptoms remain the same, i.e. IP traffic doesn't flow at all, though
> 'arp -an' does show the ethernet address of the other box attempting to
> ping this.
>
> the OP at
> http://lists.freebsd.org/pipermail/freebsd-stable/2006-August/027356.html
> mentioned that it was working fine before breakage was introduced
> relatively recently (~ 2 weeks ago), and thus something's changed in the
> interim which is causing this to happen.
>
Here is guess work(I don't have 8139C+ based NICs).
Would you give it a try?
--
Regards,
Pyun YongHyeon
-------------- next part --------------
--- if_re.c.orig Thu Aug 3 09:15:19 2006
+++ if_re.c Thu Aug 17 11:25:31 2006
@@ -541,6 +541,10 @@
return (0);
}
rval = CSR_READ_2(sc, re8139_reg);
+ if (sc->rl_type == RL_8139CPLUS && re8139_reg == RL_BMCR) {
+ /* 8139C+ uses different bit layout */
+ rval &= ~(BMCR_LOOP | BMCR_ISO);
+ }
return (rval);
}
@@ -567,6 +571,10 @@
switch (reg) {
case MII_BMCR:
re8139_reg = RL_BMCR;
+ if (sc->rl_type == RL_8139CPLUS) {
+ /* 8139C+ uses different bit layout */
+ data &= ~(BMCR_LOOP | BMCR_ISO);
+ }
break;
case MII_BMSR:
re8139_reg = RL_BMSR;
More information about the freebsd-hackers
mailing list