Module Name: src
Committed By: snj
Date: Thu Mar 26 17:36:03 UTC 2009
Modified Files:
src/sys/dev/ic [netbsd-5]: rtl8169.c rtl81x9reg.h
Log Message:
Pull up following revision(s) (requested by tsutsui in ticket #597):
sys/dev/ic/rtl8169.c: revision 1.106
sys/dev/ic/rtl81x9reg.h: revision 1.33
Add support for a 8168C/8111C revision
- also disable jumbo frame on this adapter following the FreeBSD driver
- merge redundant call to aprint_error_dev
To generate a diff of this commit:
cvs rdiff -u -r1.105.4.1 -r1.105.4.2 src/sys/dev/ic/rtl8169.c
cvs rdiff -u -r1.32 -r1.32.4.1 src/sys/dev/ic/rtl81x9reg.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.4.1 src/sys/dev/ic/rtl8169.c:1.105.4.2
--- src/sys/dev/ic/rtl8169.c:1.105.4.1 Tue Mar 24 20:38:38 2009
+++ src/sys/dev/ic/rtl8169.c Thu Mar 26 17:36:03 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: rtl8169.c,v 1.105.4.1 2009/03/24 20:38:38 snj Exp $ */
+/* $NetBSD: rtl8169.c,v 1.105.4.2 2009/03/26 17:36:03 snj Exp $ */
/*
* Copyright (c) 1997, 1998-2003
@@ -33,7 +33,7 @@
*/
#include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: rtl8169.c,v 1.105.4.1 2009/03/24 20:38:38 snj Exp $");
+__KERNEL_RCSID(0, "$NetBSD: rtl8169.c,v 1.105.4.2 2009/03/26 17:36:03 snj Exp $");
/* $FreeBSD: /repoman/r/ncvs/src/sys/dev/re/if_re.c,v 1.20 2004/04/11 20:34:08 ru Exp $ */
/*
@@ -523,22 +523,17 @@
if (memcmp((char *)&eh->ether_dhost, (char *)&dst, ETHER_ADDR_LEN) ||
memcmp((char *)&eh->ether_shost, (char *)&src, ETHER_ADDR_LEN) ||
ntohs(eh->ether_type) != ETHERTYPE_IP) {
- aprint_error_dev(sc->sc_dev, "WARNING, DMA FAILURE!\n");
- aprint_error_dev(sc->sc_dev, "expected TX data: %s",
- ether_sprintf(dst));
- aprint_error("/%s/0x%x\n", ether_sprintf(src), ETHERTYPE_IP);
- aprint_error_dev(sc->sc_dev, "received RX data: %s",
- ether_sprintf(eh->ether_dhost));
- aprint_error("/%s/0x%x\n", ether_sprintf(eh->ether_shost),
- ntohs(eh->ether_type));
- aprint_error_dev(sc->sc_dev,
+ aprint_error_dev(sc->sc_dev, "WARNING, DMA FAILURE!\n"
+ "expected TX data: %s/%s/0x%x\n"
+ "received RX data: %s/%s/0x%x\n"
"You may have a defective 32-bit NIC plugged "
- "into a 64-bit PCI slot.\n");
- aprint_error_dev(sc->sc_dev,
+ "into a 64-bit PCI slot.\n"
"Please re-install the NIC in a 32-bit slot "
- "for proper operation.\n");
- aprint_error_dev(sc->sc_dev,
- "Read the re(4) man page for more details.\n");
+ "for proper operation.\n"
+ "Read the re(4) man page for more details.\n" ,
+ ether_sprintf(dst), ether_sprintf(src), ETHERTYPE_IP,
+ ether_sprintf(eh->ether_dhost),
+ ether_sprintf(eh->ether_shost), ntohs(eh->ether_type));
error = EIO;
}
@@ -605,6 +600,7 @@
sc->sc_rev = 23;
break;
case RTK_HWREV_8168C:
+ case RTK_HWREV_8168C_SPIN2:
sc->sc_rev = 24;
break;
case RTK_HWREV_8102E:
@@ -1864,9 +1860,14 @@
case SIOCSIFMTU:
/*
* According to FreeBSD, 8102E/8102EL use a different DMA
- * descriptor format. Disable jumbo frames for those parts.
+ * descriptor format. 8168C/8111C requires touching additional
+ * magic registers. Depending on MAC revisions some controllers
+ * need to disable checksum offload.
+ *
+ * Disable jumbo frames for those parts.
*/
- if (sc->sc_rev == 25 && ifr->ifr_mtu > ETHERMTU) {
+ if ((sc->sc_rev == 24 || sc->sc_rev == 25) &&
+ ifr->ifr_mtu > ETHERMTU) {
error = EINVAL;
break;
}
Index: src/sys/dev/ic/rtl81x9reg.h
diff -u src/sys/dev/ic/rtl81x9reg.h:1.32 src/sys/dev/ic/rtl81x9reg.h:1.32.4.1
--- src/sys/dev/ic/rtl81x9reg.h:1.32 Sat Aug 23 14:27:45 2008
+++ src/sys/dev/ic/rtl81x9reg.h Thu Mar 26 17:36:03 2009
@@ -1,4 +1,4 @@
-/* $NetBSD: rtl81x9reg.h,v 1.32 2008/08/23 14:27:45 tnn Exp $ */
+/* $NetBSD: rtl81x9reg.h,v 1.32.4.1 2009/03/26 17:36:03 snj Exp $ */
/*
* Copyright (c) 1997, 1998
@@ -166,6 +166,7 @@
#define RTK_HWREV_8168_SPIN3 0x38400000
#define RTK_HWREV_8100E_SPIN2 0x38800000
#define RTK_HWREV_8168C 0x3C000000
+#define RTK_HWREV_8168C_SPIN2 0x3C400000
#define RTK_HWREV_8139 0x60000000
#define RTK_HWREV_8139A 0x70000000
#define RTK_HWREV_8139AG 0x70800000