On Tue, Jan 13, 2009 at 03:53:59PM +0100, Sascha Holzleiter wrote: > Jung-uk Kim wrote: > >On Monday 12 January 2009 12:21 pm, Sascha Holzleiter wrote: > >>Hi, > >> > >>i see similar problems with a re card: > >> > >>r...@pci0:4:7:0: class=0x020000 card=0x816710ec chip=0x816710ec > >>rev=0x10 hdr=0x00 > >> vendor = 'Realtek Semiconductor' > >> device = 'RTL8169/8110 Family Gigabit Ethernet NIC' > >> class = network > >> subclass = ethernet > >> > >>After upgrading to 7.1-RELEASE (and also STABLE) the NIC doesn't > >>seem to receive any frames. I can see the DHCP Requests on the DHCP > >>Server but the DHCPOFFERS are never seen by the client with the re0 > >>device. After setting promiscious mode on the interface (i.e. by > >>tcpdump -ni re0) the interface begins to work fine. > >> > >>I've attached a complete dmesg output, but i think the detection > >>works fine, here the short version: > >> > >>re0: <RealTek 8169SC/8110SC Single-chip Gigabit Ethernet> port > >>0x9c00-0x9cff mem 0xdfdff000-0xdfdff0ff irq 20 at device 7.0 on > >>pci4 re0: Chip rev. 0x18000000 > >>re0: MAC rev. 0x00000000 > >>miibus0: <MII bus> on re0 > >>rgephy0: <RTL8169S/8110S/8211B media interface> PHY 1 on miibus0 > >>rgephy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, > >>1000baseT, 1000baseT-FDX, auto > >>re0: Ethernet address: 00:1a:92:35:29:fa > >>re0: [FILTER] > > > >Please revert SVN r180519 (or CVS r1.95.2.22) and try again: > > > >http://www.freebsd.org/cgi/cvsweb.cgi/src/sys/dev/re/if_re.c.diff?r1=1.95.2.21;r2=1.95.2.22 > > Thanks! This fixed my problem. I now have DHCP and a running network > interface again with a 7.1-STABLE and the reverted r180519 changes. > If you need to test another version for the changes in r180519 let me > know and i'll test them on this machine. >
It seems that RTL8169SC does not like memory mapping. Instead of using io mapping for all revisions, how about 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);
_______________________________________________ freebsd-stable@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-stable To unsubscribe, send any mail to "freebsd-stable-unsubscr...@freebsd.org"