On Fri, May 07, 2010 at 05:55:02PM +0300, McLone wrote:
> Hell Low.
> 
> When Vista finally died on my girl's notebook,
> she asked me to install FreeBSD on it, so no more viruses.
> I installed RELENG_8_0/i386, to compile fresh RELENG_8/amd64
> in hopes SUJ will be availible (2gb RAM is kinda too small for ZFS).
> 
> I've built custom kernel (GENERIC with unneeded things nodevice'd)
> and rebooted it, kldload if_re, ifcionfig, so ping started to work.
> I then attempted to mount_nfs, but it hung.
> "re0: watchdog timeout" appeared on console.
> 
> So the thing is, re0 stops working after sending any packet
> longer than 536 bytes. I tested via ping, -S (536-8) works,
> but (537-8) leads to watchdog timeout. The host cannot be
> software rebooted in ~80% cases after it happened.
> 
> Machine in question is Fujitsu-Siemens Amilo Pi 2540.
> The lines from RELENG_8 dmesg are:
> 
> re0: <RealTek 8101E/8102E/8102EL/8103E PCIe 10/100baseTX> port
> 0x3000-0x30ff mem 0xf0300000-0xf0300fff irq 19 at device 0.0 on pci5
> re0: Reserved 0x1000 bytes for rid 0x18 type 3 at 0xf0300000
> re0: MSI count : 2
> re0: attempting to allocate 1 MSI vectors (2 supported)
> re0: using IRQ 256 for MSI
> re0: Using 1 MSI messages
> re0: Chip rev. 0x34000000
> re0: MAC rev. 0x00000000
> miibus0: <MII bus> on re0
> re0: bpf attached
> re0: Ethernet address: 00:03:0d:a1:a8:19
> re0: [MPSAFE]
> re0: [FILTER]
> 
> Those lines in RELENG_8_0 are the same except IRQ 259
> (i kldload if_re after boot).
> RELENG_8 is from 2010.05.04 i believe;
> had tried with sources as of 2 or 3 weeks earlier - same bug.
> No CFLAGS except -mtune=native (i doubt it does the weather).
> It doesn't matter if i kldload or just use GENERIC.
> 
> How can i test further, except building fresh RELENG_8/i386?
> How to use a magic "DDB key" and what to input in there?
> 

Would you try attached patch?
Index: sys/dev/re/if_re.c
===================================================================
--- sys/dev/re/if_re.c	(revision 207747)
+++ sys/dev/re/if_re.c	(working copy)
@@ -1162,9 +1162,11 @@
 	msic = 0;
 	if (pci_find_extcap(dev, PCIY_EXPRESS, &reg) == 0) {
 		sc->rl_flags |= RL_FLAG_PCIE;
-		/* Set PCIe maximum read request size to 2048. */
-		if (pci_get_max_read_req(dev) < 2048)
-			pci_set_max_read_req(dev, 2048);
+		if (devid != RT_DEVICEID_8101E) {
+			/* Set PCIe maximum read request size to 2048. */
+			if (pci_get_max_read_req(dev) < 2048)
+				pci_set_max_read_req(dev, 2048);
+		}
 		msic = pci_msi_count(dev);
 		if (bootverbose)
 			device_printf(dev, "MSI count : %d\n", msic);
_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to