This patch is for /driver/net/r8169.c to support RTL8169SC/8110SC,
which is a new Realtek Gigabit PCI Ethernet Controller. RTL8110SC's PCI DID
is 0x8167, while RTL8110S and RTL8110SB share 0x8169.
Signed-off-by: Edward Hsu [EMAIL PROTECTED]
--
--- ./drivers/net/r8169_n.c 2007-02-09 01:12:43.0 +0800
+++ ./drivers/net/r8169.c 2007-02-05 02:44:54.0 +0800
@@ -1,29 +1,4 @@
/*
-
-#
-# Copyright(c) 1999 - 2007 Realtek Semiconductor Corp. All rights reserved.
-#
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of the GNU General Public License as published by the
Free
-# Software Foundation; either version 2 of the License, or (at your option)
-# any later version.
-#
-# This program is distributed in the hope that it will be useful, but
WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
-# more details.
-#
-# You should have received a copy of the GNU General Public License along
with
-# this program; if not, write to the Free Software Foundation, Inc., 59
-# Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-#
-# The full GNU General Public License is included in this distribution in
the
-# file called LICENSE.
-#
-
-*/
-
-/*
=
r8169.c: A RealTek RTL-8169 Gigabit Ethernet driver for Linux kernel
2.4.x.
@@ -76,7 +51,6 @@ VERSION 2.2LK 2005/01/25
*/
#include linux/module.h
-#include linux/version.h
#include linux/moduleparam.h
#include linux/pci.h
#include linux/netdevice.h
@@ -95,15 +69,13 @@ VERSION 2.2LK 2005/01/25
#include asm/io.h
#include asm/irq.h
-#define NODE_ADDRESS_SIZE 6
-
#ifdef CONFIG_R8169_NAPI
#define NAPI_SUFFIX -NAPI
#else
#define NAPI_SUFFIX
#endif
-#define RTL8169_VERSION 6.001.00 NAPI_SUFFIX
+#define RTL8169_VERSION 2.2LK NAPI_SUFFIX
#define MODULENAME r8169
#define PFX MODULENAME :
@@ -137,12 +109,8 @@ VERSION 2.2LK 2005/01/25
/* media options */
#define MAX_UNITS 8
-static int speed[MAX_UNITS] = { -1, -1, -1, -1, -1, -1, -1, -1 };
-static int num_speed = 0;
-static int duplex[MAX_UNITS] = { -1, -1, -1, -1, -1, -1, -1, -1 };
-static int num_duplex = 0;
-static int autoneg[MAX_UNITS] = { -1, -1, -1, -1, -1, -1, -1, -1 };
-static int num_autoneg = 0;
+static int media[MAX_UNITS] = { -1, -1, -1, -1, -1, -1, -1, -1 };
+static int num_media = 0;
/* Maximum events (Rx packets, etc.) to handle at each interrupt. */
static const int max_interrupt_work = 20;
@@ -155,8 +123,8 @@ static const int multicast_filter_limit
#define MAC_ADDR_LEN 6
#define RX_FIFO_THRESH 7 /* 7 means NO threshold, Rx buffer level before
first PCI xfer. */
-#define RX_DMA_BURST 7 /* Maximum PCI burst, '7' is unlimited */
-#define TX_DMA_BURST 7 /* Maximum PCI burst, '7' is unlimited */
+#define RX_DMA_BURST 6 /* Maximum PCI burst, '6' is 1024 */
+#define TX_DMA_BURST 6 /* Maximum PCI burst, '6' is 1024 */
#define EarlyTxThld 0x3F /* 0x3F means NO early transmit */
#define RxPacketMaxSize 0x3FE8 /* 16K - 1 - ETH_HLEN - VLAN - CRC... */
#define SafeMtu 0x1c20 /* ... actually life sucks beyond ~7k */
@@ -182,12 +150,16 @@ static const int multicast_filter_limit
#define RTL_R32(reg) ((unsigned long) readl (ioaddr + (reg)))
enum mac_version {
- RTL_GIGA_MAC_VER_8169 = 0x00,
- RTL_GIGA_MAC_VER_8169S = 0x01,
- RTL_GIGA_MAC_VER_8110S = 0x02,
- RTL_GIGA_MAC_VER_8169SB = 0x04,
- RTL_GIGA_MAC_VER_8110SCd = 0x05,
- RTL_GIGA_MAC_VER_8110SCe = 0x06,
+ RTL_GIGA_MAC_VER_01 = 0x00,
+ RTL_GIGA_MAC_VER_02 = 0x01,
+ RTL_GIGA_MAC_VER_03 = 0x02,
+ RTL_GIGA_MAC_VER_04 = 0x03,
+ RTL_GIGA_MAC_VER_05 = 0x04,
+ RTL_GIGA_MAC_VER_11 = 0x0b,
+ RTL_GIGA_MAC_VER_12 = 0x0c,
+ RTL_GIGA_MAC_VER_13 = 0x0d,
+ RTL_GIGA_MAC_VER_14 = 0x0e,
+ RTL_GIGA_MAC_VER_15 = 0x0f
};
enum phy_version {
@@ -207,12 +179,16 @@ static const struct {
u8 mac_version;
u32 RxConfigMask; /* Clears the bits supported by this chip */
} rtl_chip_info[] = {
- _R(RTL8169, RTL_GIGA_MAC_VER_8169, 0xff7e1880),
- _R(RTL8169S/8110S, RTL_GIGA_MAC_VER_8169S, 0xff7e1880),
- _R(RTL8169S/8110S, RTL_GIGA_MAC_VER_8110S, 0xff7e1880),
- _R(RTL8169SB/8110SB, RTL_GIGA_MAC_VER_8169SB, 0xff7e1880),
- _R(RTL8169SC/8110SC, RTL_GIGA_MAC_VER_8110SCd, 0xff7e1880),
- _R(RTL8169SC/8110SC, RTL_GIGA_MAC_VER_8110SCe, 0xff7e1880),
+ _R(RTL8169, RTL_GIGA_MAC_VER_01, 0xff7e1880),
+ _R(RTL8169s/8110s, RTL_GIGA_MAC_VER_02, 0xff7e1880),
+ _R(RTL8169s/8110s, RTL_GIGA_MAC_VER_03, 0xff7e1880),
+ _R(RTL8169sb/8110sb, RTL_GIGA_MAC_VER_04, 0xff7e1880),
+ _R(RTL8169sc/8110sc, RTL_GIGA_MAC_VER_05, 0xff7e1880),
+ _R(RTL8168b/8111b