Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 9 Apr 2010 10:32:28 -0700
From:      Pyun YongHyeon <pyunyh@gmail.com>
To:        Michael Beckmann <michael@apfel.de>
Cc:        stable@freebsd.org
Subject:   Re: Realtek Ethernet not functioning on Asus M4A89GTD PRO
Message-ID:  <20100409173228.GC1085@michelle.cdnetworks.com>
In-Reply-To: <!&!AAAAAAAAAAAYAAAAAAAAAFu8E7CkEvBMsgZ/8G4PwcPigAAAEAAAAHlHe9UOq29Hg4tmJB6O8ysBAAAAAA==@apfel.de>
References:  <!&!AAAAAAAAAAAYAAAAAAAAAFu8E7CkEvBMsgZ/8G4PwcPigAAAEAAAAHlHe9UOq29Hg4tmJB6O8ysBAAAAAA==@apfel.de>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help

--4Ckj6UjgE2iN1+kY
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline

On Fri, Apr 09, 2010 at 01:50:02AM +0200, Michael Beckmann wrote:
> Greetings,
> 
>  
> 
> the onboard Realtek Ethernet on my Asus M4A89GTD PRO is not functioning.
> 
>  
> 
> I use FreeBSD 8.0-STABLE with a generic kernel (amd64). Everything was
> updated March 27, 2010.
> 
>  
> 
> Is it a bug?
> 
>  
> 
> Thanks,
> 
>  
> 
> Michael
> 
>  
> 
>  
> 
> pcib4: <ACPI PCI-PCI bridge> at device 21.0 on pci0
> 
> pci4: <ACPI PCI bus> on pcib4
> 
> re0: <RealTek 8168/8168B/8168C/8168CP/8168D/8168DP/8111B/8111C/8111CP/8111DP
> PCIe Gigabit Ethernet> port 0xe800-0xe8ff mem
> 0xfdfff000-0xfdffffff,0xfdff8000-0xfdffbfff irq 16 at device 0.0 on pci4
> 
> re0: Using 1 MSI messages
> 
> re0: Chip rev. 0x2c000000
> 
> re0: MAC rev. 0x00000000
> 
> re0: Unknown H/W revision: 0x2c000000
> 
> device_attach: re0 attach returned 6
> 

Try attached patch and let me know how it goes.

--4Ckj6UjgE2iN1+kY
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment; filename="re.8168E.diff"

Index: sys/dev/re/if_re.c
===================================================================
--- sys/dev/re/if_re.c	(revision 206426)
+++ sys/dev/re/if_re.c	(working copy)
@@ -174,8 +174,7 @@
 	{ RT_VENDORID, RT_DEVICEID_8101E, 0,
 	    "RealTek 8101E/8102E/8102EL/8103E PCIe 10/100baseTX" },
 	{ RT_VENDORID, RT_DEVICEID_8168, 0,
-	    "RealTek 8168/8168B/8168C/8168CP/8168D/8168DP/"
-	    "8111B/8111C/8111CP/8111DP PCIe Gigabit Ethernet" },
+	    "RealTek 8168/8111 B/C/CP/D/DP/E PCIe Gigabit Ethernet" },
 	{ RT_VENDORID, RT_DEVICEID_8169, 0,
 	    "RealTek 8169/8169S/8169SB(L)/8110S/8110SB(L) Gigabit Ethernet" },
 	{ RT_VENDORID, RT_DEVICEID_8169SC, 0,
@@ -220,6 +219,7 @@
 	{ RL_HWREV_8168CP, RL_8169, "8168CP/8111CP"},
 	{ RL_HWREV_8168D, RL_8169, "8168D/8111D"},
 	{ RL_HWREV_8168DP, RL_8169, "8168DP/8111DP"},
+	{ RL_HWREV_8168E, RL_8169, "8168E/8111E"},
 	{ 0, 0, NULL }
 };
 
@@ -1310,6 +1310,11 @@
 		 */
 		sc->rl_flags |= RL_FLAG_NOJUMBO;
 		break;
+	case RL_HWREV_8168E:
+		sc->rl_flags |= RL_FLAG_PHYWAKE | RL_FLAG_PHYWAKE_PM |
+		    RL_FLAG_PAR | RL_FLAG_DESCV2 | RL_FLAG_MACSTAT |
+		    RL_FLAG_CMDSTOP | RL_FLAG_AUTOPAD | RL_FLAG_NOJUMBO;
+		break;
 	case RL_HWREV_8169_8110SB:
 	case RL_HWREV_8169_8110SBL:
 	case RL_HWREV_8169_8110SC:
@@ -1393,6 +1398,8 @@
 	}
 
 	/* Take PHY out of power down mode. */
+	if ((sc->rl_flags & RL_FLAG_PHYWAKE_PM) != 0)
+		CSR_WRITE_1(sc, RL_PMCH, CSR_READ_1(sc, RL_PMCH) | 0x80);
 	if ((sc->rl_flags & RL_FLAG_PHYWAKE) != 0) {
 		re_gmii_writereg(dev, 1, 0x1f, 0);
 		re_gmii_writereg(dev, 1, 0x0e, 0);
@@ -3135,6 +3142,9 @@
 		v |= RL_CFG5_WOL_LANWAKE;
 	CSR_WRITE_1(sc, RL_CFG5, v);
 
+	if ((ifp->if_capenable & IFCAP_WOL) != 0 &&
+	    (sc->rl_flags & RL_FLAG_PHYWAKE_PM) != 0)
+		CSR_WRITE_1(sc, RL_PMCH, CSR_READ_1(sc, RL_PMCH) & ~0x80);
 	/*
 	 * It seems that hardware resets its link speed to 100Mbps in
 	 * power down mode so switching to 100Mbps in driver is not
Index: sys/pci/if_rlreg.h
===================================================================
--- sys/pci/if_rlreg.h	(revision 206426)
+++ sys/pci/if_rlreg.h	(working copy)
@@ -133,6 +133,7 @@
 #define RL_GMEDIASTAT		0x006C	/* 8 bits */
 #define RL_MACDBG		0x006D	/* 8 bits, 8168C SPIN2 only */
 #define RL_GPIO			0x006E	/* 8 bits, 8168C SPIN2 only */
+#define RL_PMCH			0x006F	/* 8 bits */
 #define RL_MAXRXPKTLEN		0x00DA	/* 16 bits, chip multiplies by 8 */
 #define RL_GTXSTART		0x0038	/* 8 bits */
 
@@ -162,6 +163,7 @@
 #define RL_HWREV_8102EL_SPIN1	0x24c00000
 #define RL_HWREV_8168D		0x28000000
 #define RL_HWREV_8168DP		0x28800000
+#define RL_HWREV_8168E		0x2C000000
 #define RL_HWREV_8168_SPIN1	0x30000000
 #define RL_HWREV_8100E		0x30800000
 #define RL_HWREV_8101E		0x34000000
@@ -884,6 +886,7 @@
 	uint32_t		rl_flags;
 #define	RL_FLAG_MSI		0x0001
 #define	RL_FLAG_AUTOPAD		0x0002
+#define	RL_FLAG_PHYWAKE_PM	0x0004
 #define	RL_FLAG_PHYWAKE		0x0008
 #define	RL_FLAG_NOJUMBO		0x0010
 #define	RL_FLAG_PAR		0x0020

--4Ckj6UjgE2iN1+kY--



Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?20100409173228.GC1085>