On Wed, Jan 14, 2009 at 03:18:16PM +0100, Bartosz Stec wrote:
> Walter Venable pisze:
> >FreeBSD 7.1 upgrade broke my network access, machine is totally
> >offline (powered-on and I can play inside it at the terminal, but
> >absolutely 0 network access):
> >This happened AFTER make kernel but BEFORE make installworld. I think
> >this implies it's a kernel driver issue.
> >
> >http://forums.freebsd.org/showthread.php?t=1323 (this is an ongoing
> >thread on the issue, the rl driver has also been reported broken).
> >_______________________________________________
> >[email protected] mailing list
> >http://lists.freebsd.org/mailman/listinfo/freebsd-stable
> >To unsubscribe, send any mail to "[email protected]"
> >
> I can confirm issues with re and 7.1-R
>
> dmesg:
> re0: <RealTek 8169SC/8110SC Single-chip Gigabit Ethernet> port
> 0xbc00-0xbcff mem 0xfbfff000-0xfbfff0ff irq 17 at device 7.0 on pci1
> re0: Chip rev. 0x18000000
> re0: MAC rev. 0x00000000
>
> In my case this NIC works, but lags like hell after upgrade! Working on
> console gives me pauses every 3-4 second, and second server which
> connect to this one with re0 is reporting that communication is lost
> every couple of minutes
>
Would you try attached patch?
--
Regards,
Pyun YongHyeon
Index: sys/dev/re/if_re.c
===================================================================
--- sys/dev/re/if_re.c (revision 187352)
+++ sys/dev/re/if_re.c (working copy)
@@ -158,6 +158,8 @@
/* Tunables. */
static int msi_disable = 1;
TUNABLE_INT("hw.re.msi_disable", &msi_disable);
+static int prefer_iomap = 0;
+TUNABLE_INT("hw.re.prefer_iomap", &prefer_iomap);
#define RE_CSUM_FEATURES (CSUM_IP | CSUM_TCP | CSUM_UDP)
@@ -1131,26 +1133,36 @@
pci_enable_busmaster(dev);
devid = pci_get_device(dev);
- /* Prefer memory space register mapping over IO space. */
- sc->rl_res_id = PCIR_BAR(1);
- sc->rl_res_type = SYS_RES_MEMORY;
- /* RTL8168/8101E seems to use different BARs. */
- if (devid == RT_DEVICEID_8168 || devid == RT_DEVICEID_8101E)
- sc->rl_res_id = PCIR_BAR(2);
+ /*
+ * Prefer memory space register mapping over IO space.
+ * Because RTL8169SC does not seem to work when memory mapping
+ * is used always activate io mapping.
+ */
+ if (devid == RT_DEVICEID_8169SC)
+ prefer_iomap = 1;
+ if (prefer_iomap == 0) {
+ sc->rl_res_id = PCIR_BAR(1);
+ sc->rl_res_type = SYS_RES_MEMORY;
+ /* RTL8168/8101E seems to use different BARs. */
+ if (devid == RT_DEVICEID_8168 || devid == RT_DEVICEID_8101E)
+ sc->rl_res_id = PCIR_BAR(2);
+ } else {
+ sc->rl_res_id = PCIR_BAR(0);
+ sc->rl_res_type = SYS_RES_IOPORT;
+ }
sc->rl_res = bus_alloc_resource_any(dev, sc->rl_res_type,
&sc->rl_res_id, RF_ACTIVE);
-
- if (sc->rl_res == NULL) {
+ if (sc->rl_res == NULL && prefer_iomap == 0) {
sc->rl_res_id = PCIR_BAR(0);
sc->rl_res_type = SYS_RES_IOPORT;
sc->rl_res = bus_alloc_resource_any(dev, sc->rl_res_type,
&sc->rl_res_id, RF_ACTIVE);
- if (sc->rl_res == NULL) {
- device_printf(dev, "couldn't map ports/memory\n");
- error = ENXIO;
- goto fail;
- }
}
+ if (sc->rl_res == NULL) {
+ device_printf(dev, "couldn't map ports/memory\n");
+ error = ENXIO;
+ goto fail;
+ }
sc->rl_btag = rman_get_bustag(sc->rl_res);
sc->rl_bhandle = rman_get_bushandle(sc->rl_res);
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[email protected]"