Re: Unable to get RealTek 8139C+ to work with re(4) under FreeBSD 6.1
- From: Pyun YongHyeon <pyunyh@xxxxxxxxx>
- Date: Mon, 14 Aug 2006 19:39:46 +0900
On Mon, Aug 14, 2006 at 05:22:23PM +0800, Dinesh Nair wrote:
i've got a single board computer with VIA C3 Samuel 2, 256MB RAM and 4
onboard Realtek 8139C+ NICs. I'm attempting to get FreeBSD 6.1-STABLE
working on them, but the realtek NICs just don't seem to want to work.
booting up led to a kernel trap with the following,
rlphy0: <RealTek internal media interface> on miibus0
rlphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto
re0: Ethernet address: 00:60:e0:e1:21:d7
re0: diagnostic failed, failed to receive packet in loopback mode
re0: attach aborted due to hardware diag failure
kernel trap 12 with interrupts disabled
Fatal trap 12: page fault while in kernel mode
fault virtual address = 0x74
fault code = supervisor read, page not present
instruction pointer = 0x20:0xc0625d45
stack pointer = 0x28:0xc2420a50
frame pointer = 0x28:0xc2420a54
code segment = base 0x0, limit 0xfffff, type 0x1b
= DPL 0, pres 1, def32 1, gran 1
processor eflags = resume, IOPL = 0
current process = 0 (swapper)
trap number = 12
panic: page fault
Uptime: 1s
looking through /usr/src/sys/dev/re/if_re.c, and reading this thread,
http://lists.freebsd.org/pipermail/freebsd-current/2004-June/029373.html,
i've patched if_re.c to skip the re_diag() routine if the NIC is not a
Realtek 8169. the patch follows,
----- CUT HERE -----
--- if_re.c.orig Mon Aug 14 14:43:05 2006
+++ if_re.c Mon Aug 14 14:42:16 2006
@@ -1235,12 +1235,14 @@
ether_ifattach(ifp, eaddr);
/* Perform hardware diagnostic. */
- error = re_diag(sc);
+ if (sc->rl_type == RL_8169) {
+ error = re_diag(sc);
- if (error) {
- device_printf(dev, "attach aborted due to hardware diag
failure\n");
- ether_ifdetach(ifp);
- goto fail;
+ if (error) {
+ device_printf(dev, "attach aborted due to hardware
diag failure\n");
+ ether_ifdetach(ifp);
+ goto fail;
+ }
}
/* Hook interrupt last to avoid having to lock softc */
----- CUT HERE -----
with the patch applied, the kernel trap goes away and the box boots up.
however, though the link light comes on, the device is effectively
unuseable for ethernet traffic. nothing seems to go in or out of the device
with ping and other tcp/udp traffic failing. note the media state and the
missing status line from the ifconfig output.
any clue as to what's happenning here or to pointers/patches to fix this
would be much appreciated. i've got the box sitting beside me, so testing
patches et al would be highly possible.
Recent changes from wpaul disabled re_diag() routine by default so it
wouldn't trigger the panic you've seen anymore.
However I've seen one user reported re(4) breakage on stable.
http://lists.freebsd.org/pipermail/freebsd-stable/2006-August/027356.html
Please try latest stable and show your results. If it still does not
work please let us know. I don't have 8139C+ based NICs so it would be
difficult for me to fix the issue. :-(
--
Regards,
Pyun YongHyeon
_______________________________________________
freebsd-hackers@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"
- Follow-Ups:
- Re: Unable to get RealTek 8139C+ to work with re(4) under FreeBSD 6.1
- From: Dinesh Nair
- Re: Unable to get RealTek 8139C+ to work with re(4) under FreeBSD 6.1
- References:
- Unable to get RealTek 8139C+ to work with re(4) under FreeBSD 6.1
- From: Dinesh Nair
- Unable to get RealTek 8139C+ to work with re(4) under FreeBSD 6.1
- Prev by Date: Re: Questions about devices and input.
- Next by Date: Re: Unable to get RealTek 8139C+ to work with re(4) under FreeBSD 6.1
- Previous by thread: Unable to get RealTek 8139C+ to work with re(4) under FreeBSD 6.1
- Next by thread: Re: Unable to get RealTek 8139C+ to work with re(4) under FreeBSD 6.1
- Index(es):
Relevant Pages
|