Module Name: src
Committed By: snj
Date: Tue Mar 24 20:38:38 UTC 2009
Modified Files:
src/sys/dev/ic [netbsd-5]: rtl8169.c rtl81x9var.h
Log Message:
Pull up following revision(s) (requested by tsutsui in ticket #596):
sys/dev/ic/rtl8169.c: revision 1.108
sys/dev/ic/rtl81x9var.h: revision 1.42
Access LDPS register in re_reset() only on 8169S single chip variants.
>From OpenBSD and FreeBSD drivers via PR kern/41009, and
Realtek-supplied FreeBSD driver.
To generate a diff of this commit:
cvs rdiff -u -r1.105 -r1.105.4.1 src/sys/dev/ic/rtl8169.c
cvs rdiff -u -r1.41 -r1.41.12.1 src/sys/dev/ic/rtl81x9var.h
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/sys/dev/ic/rtl8169.c
diff -u src/sys/dev/ic/rtl8169.c:1.105 src/sys/dev/ic/rtl8169.c:1.105.4.1
--- src/sys/dev/ic/rtl8169.c:1.105 Sat Aug 23 14:27:45 2008
+++ src/sys/dev/ic/rtl8169.c Tue Mar 24 20:38:38 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: rtl8169.c,v 1.105 2008/08/23 14:27:45 tnn Exp $ */
+/* $NetBSD: rtl8169.c,v 1.105.4.1 2009/03/24 20:38:38 snj Exp $ */
/*
* Copyright (c) 1997, 1998-2003
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtl8169.c,v 1.105 2008/08/23 14:27:45 tnn Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtl8169.c,v 1.105.4.1 2009/03/24 20:38:38 snj Exp $");
/* $FreeBSD: /repoman/r/ncvs/src/sys/dev/re/if_re.c,v 1.20 2004/04/11 20:34:08 ru Exp $ */
/*
@@ -389,10 +389,10 @@
device_xname(sc->sc_dev));
/*
- * NB: Realtek-supplied Linux driver does this only for
- * MCFG_METHOD_2, which corresponds to sc->sc_rev == 3.
+ * NB: Realtek-supplied FreeBSD driver does this only for MACFG_3,
+ * but also says "Rtl8169s sigle chip detected".
*/
- if (1) /* XXX check softc flag for 8169s version */
+ if ((sc->sc_quirk & RTKQ_MACLDPS) != 0)
CSR_WRITE_1(sc, RTK_LDPS, 1);
}
@@ -567,9 +567,6 @@
struct ifnet *ifp;
int error = 0, i, addr_len;
- /* Reset the adapter. */
- re_reset(sc);
-
if ((sc->sc_quirk & RTKQ_8139CPLUS) == 0) {
uint32_t hwrev;
@@ -585,12 +582,15 @@
case RTK_HWREV_8169S:
case RTK_HWREV_8110S:
sc->sc_rev = 3;
+ sc->sc_quirk |= RTKQ_MACLDPS;
break;
case RTK_HWREV_8169_8110SB:
sc->sc_rev = 4;
+ sc->sc_quirk |= RTKQ_MACLDPS;
break;
case RTK_HWREV_8169_8110SC:
sc->sc_rev = 5;
+ sc->sc_quirk |= RTKQ_MACLDPS;
break;
case RTK_HWREV_8101E:
sc->sc_rev = 11;
@@ -631,6 +631,9 @@
sc->re_ldata.re_tx_desc_cnt = RE_TX_DESC_CNT_8139;
}
+ /* Reset the adapter. */
+ re_reset(sc);
+
if (sc->sc_rev == 24 || sc->sc_rev == 25) {
/*
* Get station address from ID registers.
Index: src/sys/dev/ic/rtl81x9var.h
diff -u src/sys/dev/ic/rtl81x9var.h:1.41 src/sys/dev/ic/rtl81x9var.h:1.41.12.1
--- src/sys/dev/ic/rtl81x9var.h:1.41 Fri Apr 25 11:27:19 2008
+++ src/sys/dev/ic/rtl81x9var.h Tue Mar 24 20:38:38 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: rtl81x9var.h,v 1.41 2008/04/25 11:27:19 tsutsui Exp $ */
+/* $NetBSD: rtl81x9var.h,v 1.41.12.1 2009/03/24 20:38:38 snj Exp $ */
/*
* Copyright (c) 1997, 1998
@@ -188,6 +188,7 @@
#define RTKQ_8139CPLUS 0x00000002 /* 8139C+ */
#define RTKQ_8169NONS 0x00000004 /* old non-single 8169 */
#define RTKQ_PCIE 0x00000008 /* PCIe variants */
+#define RTKQ_MACLDPS 0x00000010 /* has LDPS register */
bus_dma_tag_t sc_dmat;