Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 17 Jan 2009 13:54:23 +0900
From:      Pyun YongHyeon <pyunyh@gmail.com>
To:        Dimitry Andric <dimitry@andric.com>
Cc:        freebsd-stable@FreeBSD.org, Jung-uk Kim <jkim@FreeBSD.org>, eugene@donpac.ru
Subject:   Re: FreeBSD 7.1 Breaks re and rl Network Interface Drivers
Message-ID:  <20090117045423.GC68290@cdnetworks.co.kr>
In-Reply-To: <496F9823.4060503@andric.com>
References:  <8dfae1c10901070639x67945324jeeecfcac647d7976@mail.gmail.com> <20090113050223.GH46346@cdnetworks.co.kr> <496CB2E7.2060902@andric.com> <200901131806.02868.jkim@FreeBSD.org> <496F9823.4060503@andric.com>

next in thread | previous in thread | raw e-mail | index | archive | help

--0vzXIDBeUiKkjNJl
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Thu, Jan 15, 2009 at 09:10:11PM +0100, Dimitry Andric wrote:
 > On 2009-01-14 00:05, Jung-uk Kim wrote:
 > > Can you try one of the following patches?
 > > 
 > > -CURRENT:	http://people.freebsd.org/~jkim/re/re.current.diff
 > > -STABLE:	http://people.freebsd.org/~jkim/re/re.stable.diff
 > > 
 > > These patches contain all patches suggested by me and yongari and an 
 > > additional patch, which may (or may not) decrease the initial setup 
 > > time.
 > 
 > I have applied the -STABLE patch, and while this doesn't have much
 > influence on the initial setup time, it does seem to solve the problem
 > of not being able to send any packets.

I think the initial setup time issue of 8169SC is different one.
Did re(4) of 7.0-RELEASE also have the same issue?
Also would you try attached patch? It doesn't fix initial setup
time issue but I'd like to know whether it makes your controller
work.

-- 
Regards,
Pyun YongHyeon

--0vzXIDBeUiKkjNJl
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="re.8169sc.diff"

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);

--0vzXIDBeUiKkjNJl--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090117045423.GC68290>