From 90d18c66a8524896dc4cef8d9449f7d64fd83555 Mon Sep 17 00:00:00 2001 From: Sepherosa Ziehau Date: Sun, 27 Apr 2008 15:10:37 +0000 Subject: [PATCH] Add basic support for 8111C; hardware checksum offload does not seems to work on 8111C yet. --- sys/dev/netif/re/if_re.c | 15 +++++++++++---- sys/dev/netif/re/if_rereg.h | 3 ++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/sys/dev/netif/re/if_re.c b/sys/dev/netif/re/if_re.c index fd1809d44f..4f4f50982f 100644 --- a/sys/dev/netif/re/if_re.c +++ b/sys/dev/netif/re/if_re.c @@ -33,7 +33,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/dev/re/if_re.c,v 1.25 2004/06/09 14:34:01 naddy Exp $ - * $DragonFly: src/sys/dev/netif/re/if_re.c,v 1.40 2008/04/27 14:18:16 sephe Exp $ + * $DragonFly: src/sys/dev/netif/re/if_re.c,v 1.41 2008/04/27 15:10:37 sephe Exp $ */ /* @@ -171,6 +171,8 @@ static const struct re_type re_devs[] = { "RealTek 8168/8111B PCIe Gigabit Ethernet" }, { PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RT8168, RE_HWREV_8168_SPIN3, "RealTek 8168B/8111B PCIe Gigabit Ethernet" }, + { PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RT8168, RE_HWREV_8168C, + "RealTek 8168C/8111C PCIe Gigabit Ethernet" }, { PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RT8169, RE_HWREV_8169, "RealTek 8169 Gigabit Ethernet" }, { PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RT8169, RE_HWREV_8169S, @@ -197,6 +199,7 @@ static const struct re_hwrev re_hwrevs[] = { { RE_HWREV_8168_SPIN1, RE_8169, RE_F_PCIE, "8168" }, { RE_HWREV_8168_SPIN2, RE_8169, RE_F_PCIE, "8168" }, { RE_HWREV_8168_SPIN3, RE_8169, RE_F_PCIE, "8168" }, + { RE_HWREV_8168C, RE_8169, RE_F_PCIE, "8168C" }, { RE_HWREV_8169, RE_8169, RE_F_HASMPC, "8169" }, { RE_HWREV_8169S, RE_8169, RE_F_HASMPC, "8169S" }, { RE_HWREV_8110S, RE_8169, RE_F_HASMPC, "8110S" }, @@ -1222,9 +1225,10 @@ re_attach(device_t dev) ifp->if_mtu = ETHERMTU; ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST; ifp->if_ioctl = re_ioctl; - ifp->if_capabilities = IFCAP_VLAN_MTU; ifp->if_start = re_start; - ifp->if_capabilities |= IFCAP_HWCSUM|IFCAP_VLAN_HWTAGGING; + ifp->if_capabilities = IFCAP_VLAN_MTU | IFCAP_VLAN_HWTAGGING; + if (hwrev != RE_HWREV_8168C) /* XXX does not work yet */ + ifp->if_capabilities |= IFCAP_HWCSUM; #ifdef DEVICE_POLLING ifp->if_poll = re_poll; #endif @@ -1242,7 +1246,10 @@ re_attach(device_t dev) ifp->if_hwassist = 0; #else ifp->if_capenable = ifp->if_capabilities; - ifp->if_hwassist = RE_CSUM_FEATURES; + if (ifp->if_capabilities & IFCAP_HWCSUM) + ifp->if_hwassist = RE_CSUM_FEATURES; + else + ifp->if_hwassist = 0; #endif /* RE_DISABLE_HWCSUM */ /* diff --git a/sys/dev/netif/re/if_rereg.h b/sys/dev/netif/re/if_rereg.h index 4b663e57bd..7c76e1a8ae 100644 --- a/sys/dev/netif/re/if_rereg.h +++ b/sys/dev/netif/re/if_rereg.h @@ -33,7 +33,7 @@ * THE POSSIBILITY OF SUCH DAMAGE. * * $FreeBSD: src/sys/pci/if_rlreg.h,v 1.42 2004/05/24 19:39:23 jhb Exp $ - * $DragonFly: src/sys/dev/netif/re/if_rereg.h,v 1.8 2007/08/10 03:48:02 dillon Exp $ + * $DragonFly: src/sys/dev/netif/re/if_rereg.h,v 1.9 2008/04/27 15:10:37 sephe Exp $ */ /* @@ -149,6 +149,7 @@ #define RE_HWREV_8101E 0x34000000 #define RE_HWREV_8168_SPIN2 0x38000000 #define RE_HWREV_8168_SPIN3 0x38400000 +#define RE_HWREV_8168C 0x3c000000 #define RE_HWREV_8139CPLUS 0x74800000 #define RE_TXDMA_16BYTES 0x00000000 -- 2.41.0