r2109 - in trunk/kernel/source: . kernel-source-2.6.10-2.6.10 kernel-source-2.6.10-2.6.10/debian kernel-source-2.6.10-2.6.10/debian/patches kernel-source-2.6.10-2.6.10/debian/patches/series

Joshua Kwan joshk@haydn.debian.org
Thu, 30 Dec 2004 15:18:18 -0700


Author: joshk
Date: 2004-12-30 15:18:02 -0700 (Thu, 30 Dec 2004)
New Revision: 2109

Added:
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.10-1
Removed:
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-1
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-2
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-3
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-4
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-5
Modified:
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/changelog
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/control
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/ia64-generic-no-smp.dpatch
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/modular-ide.dpatch
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/modular-vesafb.dpatch
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/remove-references-to-removed-drivers.dpatch
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/tg3-update.dpatch
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/prune-non-free
   trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/rules
Log:
initial work on 2.6.10 - NOT COMPLETED, patches don't even apply all the way yet



Property changes on: trunk/kernel/source/kernel-source-2.6.10-2.6.10
___________________________________________________________________
Name: svn:ignore
   + kernel
crypto
include
net
scripts
sound
CREDITS
README
init
lib
REPORTING-BUGS
security
fs
COPYING
mm
Documentation
usr
MAINTAINERS
ipc
arch
Makefile
drivers


Copied: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian (from rev 2107, trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian)

Modified: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/changelog
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/changelog	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/changelog	2004-12-30 22:18:02 UTC (rev 2109)
@@ -1,20 +1,9 @@
-kernel-source-2.6.9 (2.6.9-5) UNRELEASED; urgency=low
+kernel-source-2.6.10 (2.6.10-1) UNRELEASED; urgency=low
 
-  * [powerpc] Added a couple of powermac patches from Benjamin Herrenschmidt :
-    - 970FX cpu support
-    - G5 thermal management update
-    - Misc powermac fixes backports
-    (Bug #287030) (Sven Luther)
+  * New upstream release.
 
-  * [powerpc] Moved from powerpc kernel-patch package :
-    - powermac legacy serial fix.
-    - pegasos via-ide dual interrupt fix.
-    (Sven Luther)
+ -- Joshua Kwan <joshk@triplehelix.org>  Thu, 30 Dec 2004 12:53:40 -0800
 
-  * [powerpc] Added _chrp_type support though pegasos patch (Sven Luther)
-
- -- Sven Luther <luther@debian.org>  Sun, 26 Dec 2004 14:03:42 +0100
-
 kernel-source-2.6.9 (2.6.9-4) unstable; urgency=low
 
   * Add bw2/cyber2000fb fixes from BK to fix compilation problems.

Modified: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/control
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/control	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/control	2004-12-30 22:18:02 UTC (rev 2109)
@@ -1,4 +1,4 @@
-Source: kernel-source-2.6.9
+Source: kernel-source-2.6.10
 Section: devel
 Priority: optional
 Maintainer: Debian kernel team <debian-kernel@lists.debian.org>
@@ -6,7 +6,7 @@
 Standards-Version: 3.6.1
 Build-Depends-Indep: bzip2, debhelper (>= 4), docbook-utils, gs, kernel-package (>= 7.48), transfig
 
-Package: kernel-source-2.6.9
+Package: kernel-source-2.6.10
 Architecture: all
 Section: devel
 Priority: optional
@@ -14,8 +14,8 @@
 Depends: binutils, bzip2, coreutils | fileutils (>= 4.0)
 Recommends: libc6-dev | libc-dev, gcc, make
 Suggests: libncurses-dev | ncurses-dev, kernel-package, libqt3-mt-dev
-Description: Linux kernel source for version 2.6.9 with Debian patches
- This package provides the source code for the Linux kernel version 2.6.9.
+Description: Linux kernel source for version 2.6.10 with Debian patches
+ This package provides the source code for the Linux kernel version 2.6.10.
  .
  You may configure the kernel to your setup by typing "make config"
  and following instructions, but you could get ncursesX.X-dev and try
@@ -23,21 +23,21 @@
  are options to use QT or GNOME based configuration interfaces, but they
  need additional packages to be installed. Also, please read the detailed 
  documentation in the file
- /usr/share/doc/kernel-source-2.6.9/README.headers.gz.
+ /usr/share/doc/kernel-source-2.6.10/README.headers.gz.
  .
  If you wish to use this package to create a custom Linux kernel, then
  it is suggested that you investigate the package kernel-package,
  which has been designed to ease the task of creating kernel image
  packages. 
 
-Package: kernel-doc-2.6.9
+Package: kernel-doc-2.6.10
 Architecture: all
 Section: doc
 Priority: optional
 Provides: kernel-doc-2.6
 Depends: coreutils | fileutils (>= 4.0)
-Description: Linux kernel specific documentation for version 2.6.9
- This package provides the various readme's in the 2.6.9 kernel
+Description: Linux kernel specific documentation for version 2.6.10
+ This package provides the various readme's in the 2.6.10 kernel
  Documentation/ subdirectory: these typically contain kernel-specific
  installation notes for some drivers for example. See
  /usr/share/doc/kernel-doc-X.X.XX/Documentation/00-INDEX for a list of what
@@ -45,23 +45,23 @@
  contains information about the problems, which may result by
  upgrading your kernel.
 
-Package: kernel-patch-debian-2.6.9
+Package: kernel-patch-debian-2.6.10
 Architecture: all
 Section: devel
 Priority: optional
 Depends: bzip2
-Suggests: kernel-source-2.6.9
-Description: Debian patches to Linux 2.6.9
+Suggests: kernel-source-2.6.10
+Description: Debian patches to Linux 2.6.10
  This package includes the patches used to produce the prepackaged
- kernel-source-2.6.9 package.  Note that these patches do NOT apply
- against a pristine Linux 2.6.9 kernel but only against
- kernel-source-2.6.9_2.6.9.orig.tar.gz from the Debian archive.
+ kernel-source-2.6.10 package.  Note that these patches do NOT apply
+ against a pristine Linux 2.6.10 kernel but only against
+ kernel-source-2.6.10_2.6.10.orig.tar.gz from the Debian archive.
 
-Package: kernel-tree-2.6.9
+Package: kernel-tree-2.6.10
 Architecture: all
 Section: devel
 Priority: optional
-Depends: kernel-patch-debian-2.6.9 (= ${Source-Version}), ${kt-depends}
+Depends: kernel-patch-debian-2.6.10 (= ${Source-Version}), ${kt-depends}
 Provides: ${kt-provides}
 Description: Linux kernel tree for building prepackaged Debian kernel images
  This meta package is used as a build-time dependency of prepackaged
@@ -72,5 +72,5 @@
  For those intending to use this package as a build-time dependency, this
  package provides a list of virtual packages that guarantees the availability
  of a particular Debian revision of the kernel tree.  The
- kernel-image-2.6.9-i386 package is an example of this.
+ kernel-image-2.6.10-i386 package is an example of this.
 

Modified: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/ia64-generic-no-smp.dpatch
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/patches/ia64-generic-no-smp.dpatch	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/ia64-generic-no-smp.dpatch	2004-12-30 22:18:02 UTC (rev 2109)
@@ -15,7 +15,7 @@
 @@ -15,6 +15,7 @@
  obj-$(CONFIG_IOSAPIC)		+= iosapic.o
  obj-$(CONFIG_MODULES)		+= module.o
- obj-$(CONFIG_SMP)		+= smp.o smpboot.o
+ obj-$(CONFIG_SMP)		+= smp.o smpboot.o domain.o
 +obj-$(CONFIG_NUMA)		+= numa.o
  obj-$(CONFIG_PERFMON)		+= perfmon_default_smpl.o
  obj-$(CONFIG_IA64_CYCLONE)	+= cyclone.o
@@ -205,6 +205,19 @@
  
  /**
   * show_mem - give short summary of memory stats
+@@ -80,12 +80,6 @@
+  *
+  */
+ 
+-#ifndef CONFIG_SMP
+-#define cpu_logical_id(cpu)			0
+-#define cpu_physical_id(cpuid)			((ia64_getreg(_IA64_REG_CR_LID) >> 16) & 0xffff)
+-#endif
+-
+-
+ #define get_node_number(addr)			(((unsigned long)(addr)>>38) & 0x7ff)
+ 
+ /*
 diff -Nru a/include/asm-ia64/smp.h b/include/asm-ia64/smp.h
 --- a/include/asm-ia64/smp.h	2004-08-12 18:28:06 -07:00
 +++ b/include/asm-ia64/smp.h	2004-08-12 18:28:06 -07:00
@@ -216,17 +229,3 @@
  
  #endif /* CONFIG_SMP */
  #endif /* _ASM_IA64_SMP_H */
-diff -Nru a/include/asm-ia64/sn/sn_cpuid.h b/include/asm-ia64/sn/sn_cpuid.h
---- a/include/asm-ia64/sn/sn_cpuid.h	2004-08-12 18:28:06 -07:00
-+++ b/include/asm-ia64/sn/sn_cpuid.h	2004-08-12 18:28:06 -07:00
-@@ -83,10 +83,6 @@
-  *
-  */
- 
--#ifndef CONFIG_SMP
--#define cpu_physical_id(cpuid)			((ia64_getreg(_IA64_REG_CR_LID) >> 16) & 0xffff)
--#endif
--
- /*
-  * macros for some of these exist in sn/addrs.h & sn/arch.h, etc. However, 
-  * trying #include these files here causes circular dependencies.

Modified: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/modular-ide.dpatch
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/patches/modular-ide.dpatch	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/modular-ide.dpatch	2004-12-30 22:18:02 UTC (rev 2109)
@@ -119,62 +119,24 @@
  }
 +
 +EXPORT_SYMBOL_GPL(ide_scan_pcibus);
---- 1.16/drivers/ide/arm/icside.c	2004-02-28 12:38:08 +01:00
-+++ edited/drivers/ide/arm/icside.c	2004-06-16 15:44:16 +02:00
-@@ -861,10 +861,19 @@
- 		break;
- 	}
- 
--	if (ret == 0)
-+	if (ret == 0) {
- 		ecard_set_drvdata(ec, state);
--	else
-+
+--- 1.6/drivers/ide/arm/rapide.c	2004-02-07 20:44:16 +01:00
++++ edited/drivers/ide/arm/rapide.c	2004-06-16 15:44:16 +02:00
+@@ -33,6 +33,15 @@
+ 		probe_hwif_init(hwif);
+		create_proc_ide_interfaces();
+		ecard_set_drvdata(ec, hwif);
 +		/*
 +		 * this locks the driver in-core - remove this
-+		 * comment and the line below when we can
++		 * comment and the two lines below when we can
 +		 * safely remove interfaces.
 +		 */
++		
 +		if (!try_module_get(THIS_MODULE))
 +			ret = -ENODEV;
-+	} else {
- 		kfree(state);
-+	}
-  out:
- 	return ret;
- }
-@@ -947,8 +956,14 @@
- 	return ecard_register_driver(&icside_driver);
- }
- 
-+static void __exit icside_exit(void)
-+{
-+	ecard_remove_driver(&icside_driver);
-+}
 +
- MODULE_AUTHOR("Russell King <rmk@arm.linux.org.uk>");
- MODULE_LICENSE("GPL");
- MODULE_DESCRIPTION("ICS IDE driver");
+ 		goto out;
+ 	}
  
- module_init(icside_init);
-+module_exit(icside_exit);
---- 1.6/drivers/ide/arm/rapide.c	2004-02-07 20:44:16 +01:00
-+++ edited/drivers/ide/arm/rapide.c	2004-06-16 15:44:16 +02:00
-@@ -33,6 +33,14 @@
- 
- 	if (ret)
- 		ecard_release(ec);
-+	/*
-+	 * this locks the driver in-core - remove this
-+	 * comment and the two lines below when we can
-+	 * safely remove interfaces.
-+	 */
-+	else if (!try_module_get(THIS_MODULE))
-+		ret = -ENODEV;
-+
- 	return ret;
- }
- 
 @@ -60,7 +68,13 @@
  	return ecard_register_driver(&rapide_driver);
  }
@@ -600,21 +562,6 @@
  MODULE_DESCRIPTION("PCI driver module for the Cypress CY82C693 IDE");
 --- 1.16/drivers/ide/pci/generic.c	2004-06-01 21:04:38 +02:00
 +++ edited/drivers/ide/pci/generic.c	2004-06-16 15:44:17 +02:00
-@@ -41,12 +41,12 @@
- 
- #include "generic.h"
- 
--static unsigned int __init init_chipset_generic (struct pci_dev *dev, const char *name)
-+static unsigned int __devinit init_chipset_generic (struct pci_dev *dev, const char *name)
- {
- 	return 0;
- }
- 
--static void __init init_hwif_generic (ide_hwif_t *hwif)
-+static void __devinit init_hwif_generic (ide_hwif_t *hwif)
- {
- 	switch(hwif->pci_dev->device) {
- 		case PCI_DEVICE_ID_UMC_UM8673F:
 @@ -113,6 +113,8 @@
  		printk(KERN_INFO "Skipping disabled %s IDE controller.\n", d->name);
  		return 1; 
@@ -885,15 +832,6 @@
  MODULE_DESCRIPTION("PCI driver module for Intel PIIX IDE");
 --- 1.15/drivers/ide/pci/rz1000.c	2004-06-15 18:29:40 +02:00
 +++ edited/drivers/ide/pci/rz1000.c	2004-06-16 15:47:44 +02:00
-@@ -33,7 +33,7 @@
- 
- #include <asm/io.h>
- 
--static void __init init_hwif_rz1000 (ide_hwif_t *hwif)
-+static void __devinit init_hwif_rz1000 (ide_hwif_t *hwif)
- {
- 	u16 reg;
- 	struct pci_dev *dev = hwif->pci_dev;
 @@ -62,6 +62,8 @@
  
  static int __devinit rz1000_init_one(struct pci_dev *dev, const struct pci_device_id *id)
@@ -919,15 +857,6 @@
  MODULE_DESCRIPTION("PCI driver module for RZ1000 IDE");
 --- 1.19/drivers/ide/pci/sc1200.c	2004-06-15 18:29:40 +02:00
 +++ edited/drivers/ide/pci/sc1200.c	2004-06-16 15:47:38 +02:00
-@@ -507,7 +507,7 @@
- /*
-  * Initialize the sc1200 bridge for reliable IDE DMA operation.
-  */
--static unsigned int __init init_chipset_sc1200 (struct pci_dev *dev, const char *name)
-+static unsigned int __devinit init_chipset_sc1200 (struct pci_dev *dev, const char *name)
- {
- #if defined(DISPLAY_SC1200_TIMINGS) && defined(CONFIG_PROC_FS)
- 	if (!bmide_dev) {
 @@ -523,7 +523,7 @@
   * This gets invoked by the IDE driver once for each channel,
   * and performs channel-specific pre-initialization before drive probing.
@@ -1065,46 +994,9 @@
  MODULE_DESCRIPTION("PCI driver module for Serverworks OSB4/CSB5/CSB6 IDE");
 --- 1.9/drivers/ide/pci/sgiioc4.c	2004-06-01 21:04:38 +02:00
 +++ edited/drivers/ide/pci/sgiioc4.c	2004-06-16 15:49:46 +02:00
-@@ -382,7 +382,7 @@
- }
- 
- /* Creates a dma map for the scatter-gather list entries */
--static void __init
-+static void __devinit
- ide_dma_sgiioc4(ide_hwif_t * hwif, unsigned long dma_base)
- {
- 	int num_ports = sizeof (ioc4_dma_regs_t);
-@@ -608,7 +608,7 @@
- 	return 0;
- }
- 
--static void __init
-+static void __devinit
- ide_init_sgiioc4(ide_hwif_t * hwif)
- {
- 	hwif->mmio = 2;
-@@ -646,7 +646,7 @@
- 	hwif->INB = &sgiioc4_INB;
- }
- 
--static int __init
-+static int __devinit
- sgiioc4_ide_setup_pci_device(struct pci_dev *dev, ide_pci_device_t * d)
- {
- 	unsigned long base, ctl, dma_base, irqport;
-@@ -716,7 +716,7 @@
- 				     *pci_dev, pciio_endian_t device_end,
- 				     pciio_endian_t desired_end);
- 
--static unsigned int __init
-+static unsigned int __devinit
- pci_init_sgiioc4(struct pci_dev *dev, ide_pci_device_t * d)
- {
- 	unsigned int class_rev;
-@@ -751,6 +751,9 @@
+@@ -751,5 +751,8 @@
  		return -ENODEV;
  	}
- 
 +	if (!try_module_get(THIS_MODULE))
 +		return -ENODEV;
 +
@@ -1257,15 +1149,6 @@
  MODULE_LICENSE("GPL");
 --- 1.22/drivers/ide/pci/slc90e66.c	2004-06-15 18:29:40 +02:00
 +++ edited/drivers/ide/pci/slc90e66.c	2004-06-16 15:47:02 +02:00
-@@ -313,7 +313,7 @@
- }
- #endif /* CONFIG_BLK_DEV_IDEDMA */
- 
--static unsigned int __init init_chipset_slc90e66 (struct pci_dev *dev, const char *name)
-+static unsigned int __devinit init_chipset_slc90e66 (struct pci_dev *dev, const char *name)
- {
- #if defined(DISPLAY_SLC90E66_TIMINGS) && defined(CONFIG_PROC_FS)
- 	if (!slc90e66_proc) {
 @@ -325,7 +325,7 @@
  	return 0;
  }
@@ -1419,3 +1302,34 @@
  extern int ide_pci_register_driver(struct pci_driver *driver);
  extern void ide_pci_unregister_driver(struct pci_driver *driver);
  extern void ide_pci_setup_ports(struct pci_dev *dev, struct ide_pci_device_s *d, int autodma, int pciirq, ata_index_t *index);
+--- a/drivers/ide/arm/icside.c	2004-12-30 13:45:43.000000000 -0800
++++ b/drivers/ide/arm/icside.c	2004-12-30 13:47:27.000000000 -0800
+@@ -800,6 +800,13 @@
+ 
+ 	if (ret == 0) {
+ 		ecard_set_drvdata(ec, state);
++		/*
++		 * this locks the driver in-core - remove this
++		 * comment and the line below when we can
++		 * safely remove interfaces.
++		 */
++		if (!try_module_get(THIS_MODULE))
++			ret = -ENODEV;
+ 		goto out;
+ 	}
+ 
+@@ -892,8 +899,14 @@
+ 	return ecard_register_driver(&icside_driver);
+ }
+ 
++static void __exit icside_exit(void)
++{
++	ecard_remove_driver(&icside_driver);
++}
++
+ MODULE_AUTHOR("Russell King <rmk@arm.linux.org.uk>");
+ MODULE_LICENSE("GPL");
+ MODULE_DESCRIPTION("ICS IDE driver");
+ 
+ module_init(icside_init);
++module_exit(icside_exit);

Modified: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/modular-vesafb.dpatch
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/patches/modular-vesafb.dpatch	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/modular-vesafb.dpatch	2004-12-30 22:18:02 UTC (rev 2109)
@@ -36,9 +36,9 @@
  static int             inverse   = 0;
  static int             mtrr      = 1;
 +static int             mtrr_hdl;
- static int	       vram __initdata = 0; /* Set amount of memory to be used */
+ static int	       vram_remap __initdata = 0; /* Set amount of memory to be used */
+ static int        vram_total __initdata = 0; /* Set total amount of memory */
  static int             pmi_setpal = 0;	/* pmi for palette changes ??? */
- static int             ypan       = 0;  /* 0..nothing, 1..ypan, 2..ywrap */
 @@ -56,6 +58,9 @@
  static void            (*pmi_start)(void);
  static void            (*pmi_pal)(void);

Modified: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/remove-references-to-removed-drivers.dpatch
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/patches/remove-references-to-removed-drivers.dpatch	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/remove-references-to-removed-drivers.dpatch	2004-12-30 22:18:02 UTC (rev 2109)
@@ -20,25 +20,6 @@
  # CONFIG_EEPRO100 is not set
  # CONFIG_E100 is not set
  # CONFIG_LNE390 is not set
-diff -urN kernel-source-2.6.6/arch/arm/defconfig kernel-source-2.6.6-1/arch/arm/defconfig
---- kernel-source-2.6.6/arch/arm/defconfig	2004-03-11 13:55:24.000000000 +1100
-+++ kernel-source-2.6.6-1/arch/arm/defconfig	2003-09-21 08:41:56.000000000 +1000
-@@ -239,7 +239,6 @@
- # CONFIG_CS89x0 is not set
- CONFIG_TULIP=y
- # CONFIG_DE4X5 is not set
--# CONFIG_DGRS is not set
- # CONFIG_DM9102 is not set
- CONFIG_EEPRO100=y
- CONFIG_EEPRO100_PM=y
-@@ -262,7 +261,6 @@
- #
- # Ethernet (1000 Mbit)
- #
--# CONFIG_ACENIC is not set
- # CONFIG_HAMACHI is not set
- # CONFIG_YELLOWFIN is not set
- # CONFIG_SK98LIN is not set
 diff -urN kernel-source-2.6.6/arch/i386/defconfig kernel-source-2.6.6-1/arch/i386/defconfig
 --- kernel-source-2.6.6/arch/i386/defconfig	2004-04-05 19:49:22.000000000 +1000
 +++ kernel-source-2.6.6-1/arch/i386/defconfig	2004-04-05 20:54:17.000000000 +1000
@@ -74,9 +55,9 @@
  # CONFIG_B44 is not set
  # CONFIG_FORCEDETH is not set
 -# CONFIG_DGRS is not set
- CONFIG_EEPRO100=y
+ CONFIG_EEPRO100=m
  # CONFIG_EEPRO100_PIO is not set
- # CONFIG_E100 is not set
+ CONFIG_E100=m
 @@ -456,7 +455,6 @@
  #
  # Ethernet (1000 Mbit)

Added: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.10-1
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/patches/series/2.6.10-1	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.10-1	2004-12-30 22:18:02 UTC (rev 2109)
@@ -0,0 +1,115 @@
++ doc-post_halloween.dpatch
++ drivers-ide-dma-blacklist-toshiba.dpatch
++ drivers-input-psaux-hacks.dpatch
++ drivers-net-8139too-locking.dpatch
+X drivers/net/acenic_firmware.h
+X drivers/net/dgrs_firmware.c
+X drivers/net/tg3.c
+X drivers/net/tokenring/smctr_firmware.h
+X drivers/scsi/qla2xxx/ql2100_fw.c
+X drivers/scsi/qla2xxx/ql2200_fw.c
+X drivers/scsi/qla2xxx/ql2300_fw.c
+X drivers/scsi/qla2xxx/ql2322_fw.c
+X drivers/scsi/qla2xxx/ql6312_fw.c
+X drivers/scsi/qla2xxx/ql6322_fw.c
+X drivers/usb/media/dabfirmware.h
+X drivers/usb/misc/emi62_fw_m.h
+X drivers/usb/misc/emi62_fw_s.h
+X drivers/usb/serial/keyspan_mpr_fw.h
+X drivers/usb/serial/keyspan_usa18x_fw.h
+X drivers/usb/serial/keyspan_usa19_fw.h
+X drivers/usb/serial/keyspan_usa19qi_fw.h
+X drivers/usb/serial/keyspan_usa19qw_fw.h
+X drivers/usb/serial/keyspan_usa19w_fw.h
+X drivers/usb/serial/keyspan_usa28_fw.h
+X drivers/usb/serial/keyspan_usa28x_fw.h
+X drivers/usb/serial/keyspan_usa28xa_fw.h
+X drivers/usb/serial/keyspan_usa28xb_fw.h
+X drivers/usb/serial/keyspan_usa49w_fw.h
+X drivers/usb/serial/keyspan_usa49wlc_fw.h
++ drivers-net-tg3-readd.dpatch
++ drivers-scsi_changer.dpatch
++ drivers-scsi-generic_proc_info.dpatch
++ fs-asfs.dpatch
++ ipsec-missing_wakeup.dpatch
++ modular-ide.dpatch
++ modular-ide-pnp.dpatch
++ modular-vesafb.dpatch
++ remove-references-to-removed-drivers.dpatch
++ x86-i486_emu.dpatch
++ powerpc-pegasos.dpatch
++ ia64-generic-no-smp.dpatch
++ marvell-pegasos.dpatch
++ powerpc-g4-l2-flush-errata.dpatch
++ ia64-generic-no-smp-1-to-2.dpatch
++ ia64_cyclone_nosmp.dpatch
++ scsi-blacklist.dpatch
++ aic79xx-nohw.dpatch
++ ata_piix-combinde-mode-fix.dpatch
++ tg3-update.dpatch
++ alsa-module-load-fix.dpatch
++ sparc64-hme-lockup.dpatch
++ ia64-mem-max_addr-cmdline-fix.dpatch
++ ppc64-iSeries-build-fix.dpatch
++ drivers-video-fm2fb-build-fix.dpatch
++ fs-ext3-directio-leak-fix.dpatch
++ smbfs-overrun.dpatch
++ drivers-pci-quirks-via8233a.dpatch
++ parport_pc-via8231.dpatch
++ ia64-hp-sba_iommu-fix.dpatch
++ drivers-serial-sn_console-up-buildfix.dpatch
++ SG_IO-safe-commands-1.dpatch
++ alpha-writeq-fix.dpatch
++ mm-vmscan.dpatch
++ drivers-usb-storage-transport-1.dpatch
++ drivers-usb-storage-transport-2.dpatch
++ ia64-sn-move-irq-noop.dpatch
++ mm-shmem-nomount-fix.dpatch
++ elf-loader-fixes.dpatch
++ sparc-cg14-init.dpatch
++ sparc-sunzilog-timeout.dpatch
++ dm_io-ENOMEM-goof.dpatch
++ elf-loader-fixes-the-return.dpatch
++ aout-loader-fixes.dpatch
++ s390-sacf-fix.dpatch
+- smbfs-overrun.dpatch
++ smbfs-overflow-fixes.dpatch
++ tty-locking-fixes9.dpatch
++ drivers-serial-8250-ioremap-fix.dpatch
+- ata_piix-combinde-mode-fix.dpatch
++ ata_piix-combinde-mode-fix-2.dpatch
++ vlan-update-1.dpatch
++ drivers-ide-dma-ricoh.dpatch
++ fs-tmpfs-free_inode-leak.dpatch
++ sparc32-initrd-memcpy.dpatch
++ sparc64-sunsab-break-fix.dpatch
++ fb_get_option-fix.dpatch
++ drm-locking-fixes.dpatch
++ selinux-seqpacket-fix.dpatch
++ mark-vmio.dpatch
++ unix-serialize-dgram.dpatch
++ drivers-firmware-pcdp-register.dpatch
++ arch-x86_64-sys32_ni-overflow.dpatch
++ fs-partitions-check.dpatch
++ scm_send-dos-fix.dpatch
++ igmp-src-list-fix.dpatch
++ scm_send-dos-fix2.dpatch
++ binfmt-huge-vma-dos.dpatch
++ binfmt-huge-vma-dos2.dpatch
++ arch-x86_64-sys32_quotactl-overflow.dpatch
++ ip-conntrack-ftp-leak.dpatch
++ reiserfs-sucks-0.dpatch
++ reiserfs-sucks-1.dpatch
++ reiserfs-sucks-2.dpatch
++ reiserfs-sucks-3.dpatch
++ fix-ip-options-leak.dpatch
++ vt-of-death.dpatch
++ drivers-usb-storage-revoltec.dpatch
++ arch-x86_64-signal-bug.dpatch
+- powerpc-pegasos.dpatch
++ powerpc-pegasos-2.dpatch
++ powerpc-pegasos-via82cxxx.dpatch
++ powerpc-serial.dpatch
++ powerpc-970fx-support.dpatch
++ powerpc-g5-thermal-management-update.dpatch
++ powerpc-misc-powermac-fixes.dpatch

Deleted: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-1
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/patches/series/2.6.9-1	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-1	2004-12-30 22:18:02 UTC (rev 2109)
@@ -1,56 +0,0 @@
-+ doc-post_halloween.dpatch
-+ drivers-ide-dma-blacklist-toshiba.dpatch
-+ drivers-input-psaux-hacks.dpatch
-+ drivers-net-8139too-locking.dpatch
-X drivers/net/acenic_firmware.h
-X drivers/net/dgrs_firmware.c
-X drivers/net/tg3.c
-X drivers/net/tokenring/smctr_firmware.h
-X drivers/scsi/qla2xxx/ql2100_fw.c
-X drivers/scsi/qla2xxx/ql2200_fw.c
-X drivers/scsi/qla2xxx/ql2300_fw.c
-X drivers/scsi/qla2xxx/ql2322_fw.c
-X drivers/scsi/qla2xxx/ql6312_fw.c
-X drivers/scsi/qla2xxx/ql6322_fw.c
-X drivers/usb/media/dabfirmware.h
-X drivers/usb/misc/emi62_fw_m.h
-X drivers/usb/misc/emi62_fw_s.h
-X drivers/usb/serial/keyspan_mpr_fw.h
-X drivers/usb/serial/keyspan_usa18x_fw.h
-X drivers/usb/serial/keyspan_usa19_fw.h
-X drivers/usb/serial/keyspan_usa19qi_fw.h
-X drivers/usb/serial/keyspan_usa19qw_fw.h
-X drivers/usb/serial/keyspan_usa19w_fw.h
-X drivers/usb/serial/keyspan_usa28_fw.h
-X drivers/usb/serial/keyspan_usa28x_fw.h
-X drivers/usb/serial/keyspan_usa28xa_fw.h
-X drivers/usb/serial/keyspan_usa28xb_fw.h
-X drivers/usb/serial/keyspan_usa49w_fw.h
-X drivers/usb/serial/keyspan_usa49wlc_fw.h
-+ drivers-net-tg3-readd.dpatch
-+ drivers-scsi_changer.dpatch
-+ drivers-scsi-generic_proc_info.dpatch
-+ fs-asfs.dpatch
-+ ipsec-missing_wakeup.dpatch
-+ modular-ide.dpatch
-+ modular-ide-pnp.dpatch
-+ modular-vesafb.dpatch
-+ remove-references-to-removed-drivers.dpatch
-+ x86-i486_emu.dpatch
-+ powerpc-pegasos.dpatch
-+ ia64-generic-no-smp.dpatch
-+ marvell-pegasos.dpatch
-+ powerpc-g4-l2-flush-errata.dpatch
-+ ia64-generic-no-smp-1-to-2.dpatch
-+ ia64_cyclone_nosmp.dpatch
-+ scsi-blacklist.dpatch
-+ aic79xx-nohw.dpatch
-+ ata_piix-combinde-mode-fix.dpatch
-+ tg3-update.dpatch
-+ alsa-module-load-fix.dpatch
-+ sparc64-hme-lockup.dpatch
-+ ia64-mem-max_addr-cmdline-fix.dpatch
-+ ppc64-iSeries-build-fix.dpatch
-+ drivers-video-fm2fb-build-fix.dpatch
-+ fs-ext3-directio-leak-fix.dpatch
-+ smbfs-overrun.dpatch

Deleted: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-2
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/patches/series/2.6.9-2	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-2	2004-12-30 22:18:02 UTC (rev 2109)
@@ -1,14 +0,0 @@
-+ drivers-pci-quirks-via8233a.dpatch
-+ parport_pc-via8231.dpatch
-+ ia64-hp-sba_iommu-fix.dpatch
-+ drivers-serial-sn_console-up-buildfix.dpatch
-+ SG_IO-safe-commands-1.dpatch
-+ alpha-writeq-fix.dpatch
-+ mm-vmscan.dpatch
-+ drivers-usb-storage-transport-1.dpatch
-+ drivers-usb-storage-transport-2.dpatch
-+ ia64-sn-move-irq-noop.dpatch
-+ mm-shmem-nomount-fix.dpatch
-+ elf-loader-fixes.dpatch
-+ sparc-cg14-init.dpatch
-+ sparc-sunzilog-timeout.dpatch

Deleted: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-3
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/patches/series/2.6.9-3	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-3	2004-12-30 22:18:02 UTC (rev 2109)
@@ -1,15 +0,0 @@
-+ dm_io-ENOMEM-goof.dpatch
-+ elf-loader-fixes-the-return.dpatch
-+ aout-loader-fixes.dpatch
-+ s390-sacf-fix.dpatch
-- smbfs-overrun.dpatch
-+ smbfs-overflow-fixes.dpatch
-+ tty-locking-fixes9.dpatch
-+ drivers-serial-8250-ioremap-fix.dpatch
-- ata_piix-combinde-mode-fix.dpatch
-+ ata_piix-combinde-mode-fix-2.dpatch
-+ vlan-update-1.dpatch
-+ drivers-ide-dma-ricoh.dpatch
-+ fs-tmpfs-free_inode-leak.dpatch
-+ sparc32-initrd-memcpy.dpatch
-+ sparc64-sunsab-break-fix.dpatch

Deleted: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-4
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/patches/series/2.6.9-4	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-4	2004-12-30 22:18:02 UTC (rev 2109)
@@ -1,23 +0,0 @@
-+ fb_get_option-fix.dpatch
-+ drm-locking-fixes.dpatch
-+ selinux-seqpacket-fix.dpatch
-+ mark-vmio.dpatch
-+ unix-serialize-dgram.dpatch
-+ drivers-firmware-pcdp-register.dpatch
-+ arch-x86_64-sys32_ni-overflow.dpatch
-+ fs-partitions-check.dpatch
-+ scm_send-dos-fix.dpatch
-+ igmp-src-list-fix.dpatch
-+ scm_send-dos-fix2.dpatch
-+ binfmt-huge-vma-dos.dpatch
-+ binfmt-huge-vma-dos2.dpatch
-+ arch-x86_64-sys32_quotactl-overflow.dpatch
-+ ip-conntrack-ftp-leak.dpatch
-+ reiserfs-sucks-0.dpatch
-+ reiserfs-sucks-1.dpatch
-+ reiserfs-sucks-2.dpatch
-+ reiserfs-sucks-3.dpatch
-+ fix-ip-options-leak.dpatch
-+ vt-of-death.dpatch
-+ drivers-usb-storage-revoltec.dpatch
-+ arch-x86_64-signal-bug.dpatch

Deleted: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-5
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/patches/series/2.6.9-5	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/series/2.6.9-5	2004-12-30 22:18:02 UTC (rev 2109)
@@ -1,7 +0,0 @@
-- powerpc-pegasos.dpatch
-+ powerpc-pegasos-2.dpatch
-+ powerpc-pegasos-via82cxxx.dpatch
-+ powerpc-serial.dpatch
-+ powerpc-970fx-support.dpatch
-+ powerpc-g5-thermal-management-update.dpatch
-+ powerpc-misc-powermac-fixes.dpatch

Modified: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/tg3-update.dpatch
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/patches/tg3-update.dpatch	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/patches/tg3-update.dpatch	2004-12-30 22:18:02 UTC (rev 2109)
@@ -1,28 +1,128 @@
-#! /bin/sh -e 
-## <PATCHNAME>.dpatch by <PATCH_AUTHOR@EMAI>
-##
-## All lines beginning with `## DP:' are a description of the patch.
-## DP: Description: Update tg3 driver to upstream BK as of 2004/09/21 (modulo firmware)
-## DP: Patch author: David Miller <davem@redhat.com> (+ addition contributors)
-## DP: Upstream status: backport
+# origin: Debian (joshk)
+# cset: n/a
+# description: update tg3.c to 2.6.10 code, modulo firmware
+# inclusion: rejected
+# revision date
 
-. $(dirname $0)/DPATCH
-
-@DPATCH@
---- kernel-source-2.6.8/drivers/net/tg3.c	2004-09-13 05:28:07.000000000 +0200
-+++ linux-2.5/drivers/net/tg3.c	2004-09-18 13:46:34.949986280 +0200
-@@ -60,8 +60,8 @@
+--- drivers/net/tg3.c	2004-12-30 13:04:55.000000000 -0800
++++ tg3.c	2004-12-30 13:35:38.000000000 -0800
+@@ -5,12 +5,15 @@
+  * Copyright (C) 2001, 2002, 2003 Jeff Garzik (jgarzik@pobox.com)
+  * Copyright (C) 2004 Sun Microsystems Inc.
+  * Portions copyright 2004 Nathanael Nerode  <neroden@gcc.gnu.org>
++ *
++ * Firmware is:
++ * 	Copyright (C) 2000-2003 Broadcom Corporation.
+  */
  
+ #include <linux/config.h>
+ 
+ #include <linux/module.h>
+-
++#include <linux/moduleparam.h>
+ #include <linux/kernel.h>
+ #include <linux/types.h>
+ #include <linux/compiler.h>
+@@ -60,8 +63,8 @@
+ 
  #define DRV_MODULE_NAME		"tg3"
  #define PFX DRV_MODULE_NAME	": "
 -#define DRV_MODULE_VERSION	"3.8"
 -#define DRV_MODULE_RELDATE	"July 14, 2004"
-+#define DRV_MODULE_VERSION	"3.10"
-+#define DRV_MODULE_RELDATE	"September 14, 2004"
++#define DRV_MODULE_VERSION	"3.14"
++#define DRV_MODULE_RELDATE	"November 15, 2004"
  
  #define TG3_DEF_MAC_MODE	0
  #define TG3_DEF_RX_MODE		0
-@@ -445,9 +445,14 @@
+@@ -141,10 +144,11 @@
+ MODULE_AUTHOR("David S. Miller (davem@redhat.com) and Jeff Garzik (jgarzik@pobox.com)");
+ MODULE_DESCRIPTION("Broadcom Tigon3 ethernet driver");
+ MODULE_LICENSE("GPL");
+-MODULE_PARM(tg3_debug, "i");
+-MODULE_PARM_DESC(tg3_debug, "Tigon3 bitmapped debugging message enable value");
++MODULE_VERSION(DRV_MODULE_VERSION);
+ 
+ static int tg3_debug = -1;	/* -1 == use TG3_DEF_MSG_ENABLE as value */
++module_param(tg3_debug, int, 0);
++MODULE_PARM_DESC(tg3_debug, "Tigon3 bitmapped debugging message enable value");
+ 
+ static struct pci_device_id tg3_pci_tbl[] = {
+ 	{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5700,
+@@ -205,6 +209,14 @@
+ 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
+ 	{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5751F,
+ 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
++	{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5753,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
++	{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5753M,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
++	{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5753F,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
++	{ PCI_VENDOR_ID_BROADCOM, PCI_DEVICE_ID_TIGON3_5781,
++	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
+ 	{ PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_9DXX,
+ 	  PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0UL },
+ 	{ PCI_VENDOR_ID_SYSKONNECT, PCI_DEVICE_ID_SYSKONNECT_9MXX,
+@@ -224,8 +236,8 @@
+ 
+ MODULE_DEVICE_TABLE(pci, tg3_pci_tbl);
+ 
+-struct {
+-	char string[ETH_GSTRING_LEN];
++static struct {
++	const char string[ETH_GSTRING_LEN];
+ } ethtool_stats_keys[TG3_NUM_STATS] = {
+ 	{ "rx_octets" },
+ 	{ "rx_fragments" },
+@@ -331,7 +343,7 @@
+ 		pci_write_config_dword(tp->pdev, TG3PCI_REG_DATA, val);
+ 		spin_unlock_irqrestore(&tp->indirect_lock, flags);
+ 	} else {
+-		unsigned long dest = tp->regs + off;
++		void __iomem *dest = tp->regs + off;
+ 		writel(val, dest);
+ 		readl(dest);    /* always flush PCI write */
+ 	}
+@@ -339,7 +351,7 @@
+ 
+ static inline void _tw32_rx_mbox(struct tg3 *tp, u32 off, u32 val)
+ {
+-	unsigned long mbox = tp->regs + off;
++	void __iomem *mbox = tp->regs + off;
+ 	writel(val, mbox);
+ 	if (tp->tg3_flags & TG3_FLAG_MBOX_WRITE_REORDER)
+ 		readl(mbox);
+@@ -347,7 +359,7 @@
+ 
+ static inline void _tw32_tx_mbox(struct tg3 *tp, u32 off, u32 val)
+ {
+-	unsigned long mbox = tp->regs + off;
++	void __iomem *mbox = tp->regs + off;
+ 	writel(val, mbox);
+ 	if (tp->tg3_flags & TG3_FLAG_TXD_MBOX_HWBUG)
+ 		writel(val, mbox);
+@@ -417,6 +429,20 @@
+ 	tg3_cond_int(tp);
+ }
+ 
++/* tg3_restart_ints
++ *  similar to tg3_enable_ints, but it can return without flushing the
++ *  PIO write which reenables interrupts
++ */
++static void tg3_restart_ints(struct tg3 *tp)
++{
++	tw32(TG3PCI_MISC_HOST_CTRL,
++		(tp->misc_host_ctrl & ~MISC_HOST_CTRL_MASK_PCI_INT));
++	tw32_mailbox(MAILBOX_INTERRUPT_0 + TG3_64BIT_REG_LOW, 0x00000000);
++	mmiowb();
++
++	tg3_cond_int(tp);
++}
++
+ static inline void tg3_netif_stop(struct tg3 *tp)
+ {
+ 	netif_poll_disable(tp->dev);
+@@ -445,9 +471,14 @@
  		       0x1f);
  	tp->pci_clock_ctrl = clock_ctrl;
  
@@ -40,7 +140,80 @@
  		tw32_f(TG3PCI_CLOCK_CTRL,
  		     clock_ctrl |
  		     (CLOCK_CTRL_44MHZ_CORE | CLOCK_CTRL_ALTCLK));
-@@ -983,7 +988,7 @@
+@@ -861,34 +892,54 @@
+ 			      GRC_LCLCTRL_GPIO_OUTPUT1));
+ 			udelay(100);
+ 		} else {
++			int no_gpio2;
++			u32 grc_local_ctrl;
++
+ 			if (tp_peer != tp &&
+ 			    (tp_peer->tg3_flags & TG3_FLAG_INIT_COMPLETE) != 0)
+ 				return;
+ 
++			/* On 5753 and variants, GPIO2 cannot be used. */
++			no_gpio2 = (tp->nic_sram_data_cfg &
++				    NIC_SRAM_DATA_CFG_NO_GPIO2) != 0;
++
++			grc_local_ctrl = GRC_LCLCTRL_GPIO_OE0 |
++					 GRC_LCLCTRL_GPIO_OE1 |
++					 GRC_LCLCTRL_GPIO_OE2 |
++					 GRC_LCLCTRL_GPIO_OUTPUT1 |
++					 GRC_LCLCTRL_GPIO_OUTPUT2;
++			if (no_gpio2) {
++				grc_local_ctrl &= ~(GRC_LCLCTRL_GPIO_OE2 |
++						    GRC_LCLCTRL_GPIO_OUTPUT2);
++			}
+ 			tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl |
+-			     (GRC_LCLCTRL_GPIO_OE0 |
+-			      GRC_LCLCTRL_GPIO_OE1 |
+-			      GRC_LCLCTRL_GPIO_OE2 |
+-			      GRC_LCLCTRL_GPIO_OUTPUT1 |
+-			      GRC_LCLCTRL_GPIO_OUTPUT2));
++			       grc_local_ctrl);
+ 			udelay(100);
+ 
++			grc_local_ctrl = GRC_LCLCTRL_GPIO_OE0 |
++					 GRC_LCLCTRL_GPIO_OE1 |
++					 GRC_LCLCTRL_GPIO_OE2 |
++					 GRC_LCLCTRL_GPIO_OUTPUT0 |
++					 GRC_LCLCTRL_GPIO_OUTPUT1 |
++					 GRC_LCLCTRL_GPIO_OUTPUT2;
++			if (no_gpio2) {
++				grc_local_ctrl &= ~(GRC_LCLCTRL_GPIO_OE2 |
++						    GRC_LCLCTRL_GPIO_OUTPUT2);
++			}
+ 			tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl |
+-			     (GRC_LCLCTRL_GPIO_OE0 |
+-			      GRC_LCLCTRL_GPIO_OE1 |
+-			      GRC_LCLCTRL_GPIO_OE2 |
+-			      GRC_LCLCTRL_GPIO_OUTPUT0 |
+-			      GRC_LCLCTRL_GPIO_OUTPUT1 |
+-			      GRC_LCLCTRL_GPIO_OUTPUT2));
++			       grc_local_ctrl);
+ 			udelay(100);
+ 
+-			tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl |
+-			     (GRC_LCLCTRL_GPIO_OE0 |
+-			      GRC_LCLCTRL_GPIO_OE1 |
+-			      GRC_LCLCTRL_GPIO_OE2 |
+-			      GRC_LCLCTRL_GPIO_OUTPUT0 |
+-			      GRC_LCLCTRL_GPIO_OUTPUT1));
+-			udelay(100);
++			grc_local_ctrl = GRC_LCLCTRL_GPIO_OE0 |
++					 GRC_LCLCTRL_GPIO_OE1 |
++					 GRC_LCLCTRL_GPIO_OE2 |
++					 GRC_LCLCTRL_GPIO_OUTPUT0 |
++					 GRC_LCLCTRL_GPIO_OUTPUT1;
++			if (!no_gpio2) {
++				tw32_f(GRC_LOCAL_CTRL, tp->grc_local_ctrl |
++				       grc_local_ctrl);
++				udelay(100);
++			}
+ 		}
+ 	} else {
+ 		if (GET_ASIC_REV(tp->pci_chip_rev_id) != ASIC_REV_5700 &&
+@@ -983,7 +1034,7 @@
  		tp->link_config.orig_autoneg = tp->link_config.autoneg;
  	}
  
@@ -49,7 +222,7 @@
  		tp->link_config.speed = SPEED_10;
  		tp->link_config.duplex = DUPLEX_HALF;
  		tp->link_config.autoneg = AUTONEG_ENABLE;
-@@ -995,7 +1000,7 @@
+@@ -995,7 +1046,7 @@
  	if (tp->tg3_flags & TG3_FLAG_WOL_ENABLE) {
  		u32 mac_mode;
  
@@ -58,7 +231,7 @@
  			tg3_writephy(tp, MII_TG3_AUX_CTRL, 0x5a);
  			udelay(40);
  
-@@ -1117,29 +1122,33 @@
+@@ -1117,29 +1168,33 @@
  	u32 old_rx_mode = tp->rx_mode;
  	u32 old_tx_mode = tp->tx_mode;
  
@@ -113,7 +286,7 @@
  
  	if (new_tg3_flags & TG3_FLAG_RX_PAUSE)
  		tp->rx_mode |= RX_MODE_FLOW_CTRL_ENABLE;
-@@ -1490,6 +1499,18 @@
+@@ -1490,6 +1545,18 @@
  	current_speed = SPEED_INVALID;
  	current_duplex = DUPLEX_INVALID;
  
@@ -132,7 +305,7 @@
  	bmsr = 0;
  	for (i = 0; i < 100; i++) {
  		tg3_readphy(tp, MII_BMSR, &bmsr);
-@@ -1569,7 +1590,7 @@
+@@ -1569,7 +1636,7 @@
  			tg3_setup_flow_control(tp, local_adv, remote_adv);
  		}
  	}
@@ -141,7 +314,7 @@
  	if (current_link_up == 0) {
  		u32 tmp;
  
-@@ -1619,7 +1640,7 @@
+@@ -1619,7 +1686,7 @@
  	tw32_f(MAC_MODE, tp->mac_mode);
  	udelay(40);
  
@@ -150,7 +323,7 @@
  		/* Polled via timer. */
  		tw32_f(MAC_EVENT, 0);
  	} else {
-@@ -1968,62 +1989,264 @@
+@@ -1968,62 +2035,273 @@
  static int fiber_autoneg(struct tg3 *tp, u32 *flags)
  {
  	int res = 0;
@@ -204,21 +377,11 @@
 -		udelay(40);
 +		udelay(1);
 +	}
- 
--		memset(&aninfo, 0, sizeof(aninfo));
--		aninfo.flags |= MR_AN_ENABLE;
--		aninfo.state = ANEG_STATE_UNKNOWN;
--		aninfo.cur_time = 0;
--		tick = 0;
--		while (++tick < 195000) {
--			status = tg3_fiber_aneg_smachine(tp, &aninfo);
--			if (status == ANEG_DONE || status == ANEG_FAILED)
--				break;
++
 +	tp->mac_mode &= ~MAC_MODE_SEND_CONFIGS;
 +	tw32_f(MAC_MODE, tp->mac_mode);
 +	udelay(40);
- 
--			udelay(1);
++
 +	*flags = aninfo.flags;
 +
 +	if (status == ANEG_DONE &&
@@ -249,7 +412,15 @@
 +	/* XXX schedule_timeout() ... */
 +	for (i = 0; i < 500; i++)
 +		udelay(10);
-+
+ 
+-		memset(&aninfo, 0, sizeof(aninfo));
+-		aninfo.flags |= MR_AN_ENABLE;
+-		aninfo.state = ANEG_STATE_UNKNOWN;
+-		aninfo.cur_time = 0;
+-		tick = 0;
+-		while (++tick < 195000) {
+-			status = tg3_fiber_aneg_smachine(tp, &aninfo);
+-			if (status == ANEG_DONE || status == ANEG_FAILED)
 +	/* Config mode; select PMA/Ch 1 regs. */
 +	tg3_writephy(tp, 0x10, 0x8411);
 +
@@ -320,13 +491,10 @@
 +		if (mac_status & MAC_STATUS_PCS_SYNCED) {
 +			tg3_setup_flow_control(tp, 0, 0);
 +			current_link_up = 1;
- 		}
++		}
 +		goto out;
 +	}
- 
--		tp->mac_mode &= ~MAC_MODE_SEND_CONFIGS;
--		tw32_f(MAC_MODE, tp->mac_mode);
--		udelay(40);
++
 +	/* Want auto-negotiation.  */
 +	expected_sg_dig_ctrl = 0x81388400;
 +
@@ -346,8 +514,18 @@
 +		tp->tg3_flags2 |= TG3_FLG2_PHY_JUST_INITTED;
 +	} else if (mac_status & (MAC_STATUS_PCS_SYNCED |
 +				 MAC_STATUS_SIGNAL_DET)) {
-+		sg_dig_status = tr32(SG_DIG_STATUS);
++		int i;
 +
++		/* Giver time to negotiate (~200ms) */
++		for (i = 0; i < 40000; i++) {
++			sg_dig_status = tr32(SG_DIG_STATUS);
++			if (sg_dig_status & (0x3))
+ 				break;
++			udelay(5);
++		}
++		mac_status = tr32(MAC_STATUS);
+ 
+-			udelay(1);
 +		if ((sg_dig_status & (1 << 1)) &&
 +		    (mac_status & MAC_STATUS_PCS_SYNCED)) {
 +			u32 local_adv, remote_adv;
@@ -376,38 +554,41 @@
 +
 +					tw32_f(MAC_SERDES_CFG, val);
 +				}
- 
--		*flags = aninfo.flags;
++
 +				tw32_f(SG_DIG_CTRL, 0x01388400);
 +				udelay(40);
- 
--		if (status == ANEG_DONE &&
--		    (aninfo.flags & (MR_AN_COMPLETE | MR_LINK_OK |
--				     MR_LP_ADV_FULL_DUPLEX)))
--			res = 1;
++
 +				mac_status = tr32(MAC_STATUS);
 +				if (mac_status & MAC_STATUS_PCS_SYNCED) {
 +					tg3_setup_flow_control(tp, 0, 0);
 +					current_link_up = 1;
 +				}
 +			}
-+		}
- 	}
+ 		}
++	}
  
--	return res;
+-		tp->mac_mode &= ~MAC_MODE_SEND_CONFIGS;
+-		tw32_f(MAC_MODE, tp->mac_mode);
+-		udelay(40);
 +out:
 +	return current_link_up;
 +}
-+
+ 
+-		*flags = aninfo.flags;
 +static int tg3_setup_fiber_by_hand(struct tg3 *tp, u32 mac_status)
 +{
 +	int current_link_up = 0;
-+
+ 
+-		if (status == ANEG_DONE &&
+-		    (aninfo.flags & (MR_AN_COMPLETE | MR_LINK_OK |
+-				     MR_LP_ADV_FULL_DUPLEX)))
+-			res = 1;
 + 	if (!(mac_status & MAC_STATUS_PCS_SYNCED)) {
 +		tp->tg3_flags &= ~TG3_FLAG_GOT_SERDES_FLOWCTL;
 +		goto out;
-+	}
-+
+ 	}
+ 
+-	return res;
 +	if (tp->link_config.autoneg == AUTONEG_ENABLE) {
 +		u32 flags;
 +		int i;
@@ -458,7 +639,7 @@
  }
  
  static int tg3_setup_fiber_phy(struct tg3 *tp, int force_reset)
-@@ -2031,6 +2254,7 @@
+@@ -2031,6 +2309,7 @@
  	u32 orig_pause_cfg;
  	u16 orig_active_speed;
  	u8 orig_active_duplex;
@@ -466,7 +647,7 @@
  	int current_link_up;
  	int i;
  
-@@ -2040,118 +2264,43 @@
+@@ -2040,118 +2319,43 @@
  	orig_active_speed = tp->link_config.active_speed;
  	orig_active_duplex = tp->link_config.active_duplex;
  
@@ -534,24 +715,24 @@
 -		tg3_writephy(tp, 0x11, 0x0a50);
 -		udelay(40);
 -		tg3_writephy(tp, 0x11, 0x0a10);
+-
+-		/* Wait for signal to stabilize */
+-		/* XXX schedule_timeout() ... */
+-		for (i = 0; i < 15000; i++)
+-			udelay(10);
 +	tp->mac_mode &= ~(MAC_MODE_PORT_MODE_MASK | MAC_MODE_HALF_DUPLEX);
 +	tp->mac_mode |= MAC_MODE_PORT_MODE_TBI;
 +	tw32_f(MAC_MODE, tp->mac_mode);
 +	udelay(40);
  
--		/* Wait for signal to stabilize */
--		/* XXX schedule_timeout() ... */
--		for (i = 0; i < 15000; i++)
--			udelay(10);
-+	if (tp->phy_id == PHY_ID_BCM8002)
-+		tg3_init_bcm8002(tp);
- 
 -		/* Deselect the channel register so we can read the PHYID
 -		 * later.
 -		 */
 -		tg3_writephy(tp, 0x10, 0x8011);
 -	}
--
++	if (tp->phy_id == PHY_ID_BCM8002)
++		tg3_init_bcm8002(tp);
+ 
 -	/* Enable link change interrupt unless serdes polling.  */
 -	if (!(tp->tg3_flags & TG3_FLAG_POLL_SERDES))
 -		tw32_f(MAC_EVENT, MAC_EVENT_LNKSTATE_CHANGED);
@@ -568,15 +749,15 @@
 -  
 -			if (fiber_autoneg(tp, &flags)) {
 -				u32 local_adv, remote_adv;
--
++	mac_status = tr32(MAC_STATUS);
+ 
 -				local_adv = ADVERTISE_PAUSE_CAP;
 -				remote_adv = 0;
 -				if (flags & MR_LP_ADV_SYM_PAUSE)
 -  					remote_adv |= LPA_PAUSE_CAP;
 -				if (flags & MR_LP_ADV_ASYM_PAUSE)
 -					remote_adv |= LPA_PAUSE_ASYM;
-+	mac_status = tr32(MAC_STATUS);
- 
+-
 -				tg3_setup_flow_control(tp, local_adv, remote_adv);
 -
 -				tp->tg3_flags |=
@@ -612,7 +793,7 @@
  
  	tp->mac_mode &= ~MAC_MODE_LINK_POLARITY;
  	tw32_f(MAC_MODE, tp->mac_mode);
-@@ -2162,19 +2311,24 @@
+@@ -2162,19 +2366,24 @@
  		 (tp->hw_status->status & ~SD_STATUS_LINK_CHG));
  
  	for (i = 0; i < 100; i++) {
@@ -646,7 +827,7 @@
  
  	if (current_link_up == 1) {
  		tp->link_config.active_speed = SPEED_1000;
-@@ -2206,15 +2360,6 @@
+@@ -2206,15 +2415,6 @@
  			tg3_link_report(tp);
  	}
  
@@ -662,7 +843,7 @@
  	return 0;
  }
  
-@@ -2222,7 +2367,7 @@
+@@ -2222,7 +2422,7 @@
  {
  	int err;
  
@@ -671,7 +852,24 @@
  		err = tg3_setup_fiber_phy(tp, force_reset);
  	} else {
  		err = tg3_setup_copper_phy(tp, force_reset);
-@@ -2741,11 +2886,11 @@
+@@ -2584,6 +2784,7 @@
+ 		tw32_rx_mbox(MAILBOX_RCV_JUMBO_PROD_IDX + TG3_64BIT_REG_LOW,
+ 			     sw_idx);
+ 	}
++	mmiowb();
+ 
+ 	return received;
+ }
+@@ -2642,7 +2843,7 @@
+ 	if (done) {
+ 		spin_lock_irqsave(&tp->lock, flags);
+ 		__netif_rx_complete(netdev);
+-		tg3_enable_ints(tp);
++		tg3_restart_ints(tp);
+ 		spin_unlock_irqrestore(&tp->lock, flags);
+ 	}
+ 
+@@ -2741,11 +2942,11 @@
  	tg3_halt(tp);
  	tg3_init_hw(tp);
  
@@ -685,7 +883,7 @@
  	if (restart_timer)
  		mod_timer(&tp->timer, jiffies + 1);
  }
-@@ -2815,6 +2960,7 @@
+@@ -2815,6 +3016,7 @@
  			dma_addr_t mapping, int len, u32 flags,
  			u32 mss_and_is_end)
  {
@@ -693,13 +891,13 @@
  	int is_end = (mss_and_is_end & 0x1);
  	u32 mss = (mss_and_is_end >> 1);
  	u32 vlan_tag = 0;
-@@ -2826,35 +2972,11 @@
+@@ -2826,35 +3028,11 @@
  		flags &= 0xffff;
  	}
  	vlan_tag |= (mss << TXD_MSS_SHIFT);
 -	if (tp->tg3_flags & TG3_FLAG_HOST_TXDS) {
 -		struct tg3_tx_buffer_desc *txd = &tp->tx_ring[entry];
- 
+-
 -		txd->addr_hi = ((u64) mapping >> 32);
 -		txd->addr_lo = ((u64) mapping & 0xffffffff);
 -		txd->len_flags = (len << TXD_LEN_SHIFT) | flags;
@@ -707,7 +905,7 @@
 -	} else {
 -		struct tx_ring_info *txr = &tp->tx_buffers[entry];
 -		unsigned long txd;
--
+ 
 -		txd = (tp->regs +
 -		       NIC_SRAM_WIN_BASE +
 -		       NIC_SRAM_TX_BUFFER_DESC);
@@ -733,9 +931,31 @@
  }
  
  static inline int tg3_4g_overflow_test(dma_addr_t mapping, int len)
-@@ -3043,19 +3169,7 @@
+@@ -2895,7 +3073,11 @@
+ 	 * So we really do need to disable interrupts when taking
+ 	 * tx_lock here.
+ 	 */
+-	spin_lock_irqsave(&tp->tx_lock, flags);
++	local_irq_save(flags);
++	if (!spin_trylock(&tp->tx_lock)) { 
++		local_irq_restore(flags);
++		return NETDEV_TX_LOCKED; 
++	} 
+ 
+ 	/* This is a hard error, log it. */
+ 	if (unlikely(TX_BUFFS_AVAIL(tp) <= (skb_shinfo(skb)->nr_frags + 1))) {
+@@ -2903,7 +3085,7 @@
+ 		spin_unlock_irqrestore(&tp->tx_lock, flags);
+ 		printk(KERN_ERR PFX "%s: BUG! Tx Ring full when queue awake!\n",
+ 		       dev->name);
+-		return 1;
++		return NETDEV_TX_BUSY;
  	}
  
+ 	entry = tp->tx_prod;
+@@ -3043,30 +3225,19 @@
+ 	}
+ 
  	/* Packets are ready, update Tx producer idx local and on card. */
 -	if (tp->tg3_flags & TG3_FLAG_HOST_TXDS) {
 -		tw32_tx_mbox((MAILBOX_SNDHOST_PROD_IDX_0 +
@@ -754,8 +974,21 @@
  
  	tp->tx_prod = entry;
  	if (TX_BUFFS_AVAIL(tp) <= (MAX_SKB_FRAGS + 1))
-@@ -3105,9 +3219,10 @@
+ 		netif_stop_queue(dev);
  
+ out_unlock:
++    	mmiowb();
+ 	spin_unlock_irqrestore(&tp->tx_lock, flags);
+ 
+ 	dev->trans_start = jiffies;
+ 
+-	return 0;
++	return NETDEV_TX_OK;
+ }
+ 
+ static inline void tg3_set_mtu(struct net_device *dev, struct tg3 *tp,
+@@ -3105,9 +3276,10 @@
+ 
  	tg3_init_hw(tp);
  
 +	tg3_netif_start(tp);
@@ -766,7 +999,7 @@
  
  	return 0;
  }
-@@ -3193,7 +3308,6 @@
+@@ -3193,7 +3365,6 @@
   */
  static void tg3_init_rings(struct tg3 *tp)
  {
@@ -774,7 +1007,7 @@
  	u32 i;
  
  	/* Free up all the SKBs. */
-@@ -3203,21 +3317,7 @@
+@@ -3203,21 +3374,7 @@
  	memset(tp->rx_std, 0, TG3_RX_RING_BYTES);
  	memset(tp->rx_jumbo, 0, TG3_RX_JUMBO_RING_BYTES);
  	memset(tp->rx_rcb, 0, TG3_RX_RCB_RING_BYTES(tp));
@@ -797,7 +1030,7 @@
  
  	/* Initialize invariants of the rings, we only set this
  	 * stuff once.  This works because the card does not
-@@ -3348,15 +3448,10 @@
+@@ -3348,15 +3505,10 @@
  	if (!tp->rx_rcb)
  		goto err_out;
  
@@ -817,7 +1050,7 @@
  
  	tp->hw_status = pci_alloc_consistent(tp->pdev,
  					     TG3_HW_STATUS_SIZE,
-@@ -3598,6 +3693,8 @@
+@@ -3598,6 +3750,8 @@
  	}
  }
  
@@ -826,7 +1059,7 @@
  /* tp->lock is held. */
  static int tg3_chip_reset(struct tg3 *tp)
  {
-@@ -3605,7 +3702,7 @@
+@@ -3605,7 +3759,7 @@
  	u32 flags_save;
  	int i;
  
@@ -835,8 +1068,17 @@
  		tg3_nvram_lock(tp);
  
  	/*
-@@ -3700,6 +3797,11 @@
+@@ -3691,7 +3845,7 @@
+ 		val |= PCISTATE_RETRY_SAME_DMA;
+ 	pci_write_config_dword(tp->pdev, TG3PCI_PCISTATE, val);
  
+-	pci_restore_state(tp->pdev, tp->pci_cfg_state);
++	pci_restore_state(tp->pdev);
+ 
+ 	/* Make sure PCI-X relaxed ordering bit is clear. */
+ 	pci_read_config_dword(tp->pdev, TG3PCI_X_CAPS, &val);
+@@ -3700,6 +3854,11 @@
+ 
  	tw32(MEMARB_MODE, MEMARB_MODE_ENABLE);
  
 +	if (tp->pci_chip_rev_id == CHIPREV_ID_5750_A3) {
@@ -847,7 +1089,7 @@
  	tw32(GRC_MODE, tp->grc_mode);
  
  	if (tp->pci_chip_rev_id == CHIPREV_ID_5705_A0) {
-@@ -3716,7 +3818,7 @@
+@@ -3716,7 +3875,7 @@
  		tw32(TG3PCI_CLOCK_CTRL, tp->pci_clock_ctrl);
  	}
  
@@ -856,7 +1098,7 @@
  		tp->mac_mode = MAC_MODE_PORT_MODE_TBI;
  		tw32_f(MAC_MODE, tp->mac_mode);
  	} else
-@@ -3731,7 +3833,7 @@
+@@ -3731,7 +3890,7 @@
  		udelay(10);
  	}
  	if (i >= 100000 &&
@@ -865,7 +1107,16 @@
  		printk(KERN_ERR PFX "tg3_reset_hw timed out for %s, "
  		       "firmware will not restart magic=%08x\n",
  		       tp->dev->name, val);
-@@ -4314,10 +4915,7 @@
+@@ -4123,7 +4282,7 @@
+ /* tp->lock is held. */
+ static int tg3_load_tso_firmware(struct tg3 *tp)
+ {
+-	struct fw_info *info;
++	struct fw_info info;
+ 	unsigned long cpu_base, cpu_scratch_base, cpu_scratch_size;
+ 	int err, i;
+ 
+@@ -4314,10 +4473,7 @@
  			  GRC_MODE_4X_NIC_SEND_RINGS |
  			  GRC_MODE_NO_TX_PHDR_CSUM |
  			  GRC_MODE_NO_RX_PHDR_CSUM);
@@ -877,7 +1128,7 @@
  	if (tp->tg3_flags & TG3_FLAG_NO_TX_PSEUDO_CSUM)
  		tp->grc_mode |= GRC_MODE_NO_TX_PHDR_CSUM;
  	if (tp->tg3_flags & TG3_FLAG_NO_RX_PSEUDO_CSUM)
-@@ -4470,18 +5068,11 @@
+@@ -4470,18 +4626,11 @@
  	tw32_mailbox(MAILBOX_SNDHOST_PROD_IDX_0 + TG3_64BIT_REG_LOW, 0);
  	tw32_tx_mbox(MAILBOX_SNDNIC_PROD_IDX_0 + TG3_64BIT_REG_LOW, 0);
  
@@ -901,7 +1152,7 @@
  
  	/* There is only one receive return ring on 5705/5750, no need
  	 * to explicitly disable the others.
-@@ -4747,14 +5338,14 @@
+@@ -4747,14 +4896,14 @@
  	tw32(MAC_LED_CTRL, tp->led_ctrl);
  
  	tw32(MAC_MI_STAT, MAC_MI_STAT_LNKSTAT_ATTN_ENAB);
@@ -918,7 +1169,7 @@
  		if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704) {
  			/* Set drive transmission level to 1.2V  */
  			val = tr32(MAC_SERDES_CFG);
-@@ -4772,22 +5363,8 @@
+@@ -4772,22 +4921,8 @@
  	tw32_f(MAC_LOW_WMARK_MAX_RX_FRAME, 2);
  
  	if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704 &&
@@ -943,7 +1194,7 @@
  		tp->tg3_flags2 |= TG3_FLG2_HW_AUTONEG;
  	}
  
-@@ -4795,7 +5372,7 @@
+@@ -4795,7 +4930,7 @@
  	if (err)
  		return err;
  
@@ -952,7 +1203,7 @@
  		u32 tmp;
  
  		/* Clear CRC stats. */
-@@ -4987,7 +5564,8 @@
+@@ -4987,7 +5122,8 @@
  				need_setup = 1;
  			}
  			if (! netif_carrier_ok(tp->dev) &&
@@ -962,7 +1213,7 @@
  				need_setup = 1;
  			}
  			if (need_setup) {
-@@ -5040,8 +5618,8 @@
+@@ -5040,8 +5176,8 @@
  	spin_unlock(&tp->tx_lock);
  	spin_unlock_irq(&tp->lock);
  
@@ -973,7 +1224,7 @@
  	 */
  	err = tg3_alloc_consistent(tp);
  	if (err)
-@@ -5383,7 +5961,7 @@
+@@ -5383,7 +5519,7 @@
  {
  	struct tg3_hw_stats *hw_stats = tp->hw_stats;
  
@@ -982,7 +1233,32 @@
  	    (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5700 ||
  	     GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5701)) {
  		unsigned long flags;
-@@ -5814,7 +6394,7 @@
+@@ -5656,7 +5792,9 @@
+ 	struct tg3 *tp = netdev_priv(dev);
+ 
+ 	spin_lock_irq(&tp->lock);
++	spin_lock(&tp->tx_lock);
+ 	__tg3_set_rx_mode(dev);
++	spin_unlock(&tp->tx_lock);
+ 	spin_unlock_irq(&tp->lock);
+ }
+ 
+@@ -5739,11 +5877,11 @@
+ 	return EEPROM_CHIP_SIZE;
+ }
+ 
+-static int __devinit tg3_nvram_read_using_eeprom(struct tg3 *tp,
+-						 u32 offset, u32 *val);
++static int tg3_nvram_read_using_eeprom(struct tg3 *tp,
++					u32 offset, u32 *val);
+ static int tg3_get_eeprom(struct net_device *dev, struct ethtool_eeprom *eeprom, u8 *data)
+ {
+-	struct tg3 *tp = dev->priv;
++	struct tg3 *tp = netdev_priv(dev);
+ 	int ret;
+ 	u8  *pd;
+ 	u32 i, offset, len, val, b_offset, b_count;
+@@ -5814,7 +5952,7 @@
  		cmd->supported |= (SUPPORTED_1000baseT_Half |
  				   SUPPORTED_1000baseT_Full);
  
@@ -991,7 +1267,7 @@
  		cmd->supported |= (SUPPORTED_100baseT_Half |
  				  SUPPORTED_100baseT_Full |
  				  SUPPORTED_10baseT_Half |
-@@ -5843,7 +6423,7 @@
+@@ -5843,7 +5981,7 @@
  	    tp->link_config.phy_is_low_power)
  		return -EAGAIN;
  
@@ -1000,7 +1276,7 @@
  		/* These are the only valid advertisement bits allowed.  */
  		if (cmd->autoneg == AUTONEG_ENABLE &&
  		    (cmd->advertising & ~(ADVERTISED_1000baseT_Half |
-@@ -5901,7 +6481,7 @@
+@@ -5901,7 +6039,7 @@
  	if (wol->wolopts & ~WAKE_MAGIC)
  		return -EINVAL;
  	if ((wol->wolopts & WAKE_MAGIC) &&
@@ -1009,7 +1285,7 @@
  	    !(tp->tg3_flags & TG3_FLAG_SERDES_WOL_CAP))
  		return -EINVAL;
    
-@@ -5997,10 +6577,9 @@
+@@ -5997,10 +6135,9 @@
  
  	tg3_halt(tp);
  	tg3_init_hw(tp);
@@ -1021,7 +1297,7 @@
    
  	return 0;
  }
-@@ -6010,8 +6589,8 @@
+@@ -6010,8 +6147,8 @@
  	struct tg3 *tp = netdev_priv(dev);
    
  	epause->autoneg = (tp->tg3_flags & TG3_FLAG_PAUSE_AUTONEG) != 0;
@@ -1032,7 +1308,7 @@
  }
    
  static int tg3_set_pauseparam(struct net_device *dev, struct ethtool_pauseparam *epause)
-@@ -6026,18 +6605,18 @@
+@@ -6026,18 +6163,18 @@
  	else
  		tp->tg3_flags &= ~TG3_FLAG_PAUSE_AUTONEG;
  	if (epause->rx_pause)
@@ -1056,7 +1332,16 @@
    
  	return 0;
  }
-@@ -6124,7 +6703,7 @@
+@@ -6106,7 +6243,7 @@
+ static void tg3_get_ethtool_stats (struct net_device *dev,
+ 				   struct ethtool_stats *estats, u64 *tmp_stats)
+ {
+-	struct tg3 *tp = dev->priv;
++	struct tg3 *tp = netdev_priv(dev);
+ 	memcpy(tmp_stats, tg3_get_estats(tp), sizeof(tp->estats));
+ }
+ 
+@@ -6124,7 +6261,7 @@
  	case SIOCGMIIREG: {
  		u32 mii_regval;
  
@@ -1065,7 +1350,7 @@
  			break;			/* We have no PHY */
  
  		spin_lock_irq(&tp->lock);
-@@ -6137,7 +6716,7 @@
+@@ -6137,7 +6274,7 @@
  	}
  
  	case SIOCSMIIREG:
@@ -1074,7 +1359,7 @@
  			break;			/* We have no PHY */
  
  		if (!capable(CAP_NET_ADMIN))
-@@ -6224,7 +6803,7 @@
+@@ -6224,7 +6361,7 @@
  {
  	int j;
  
@@ -1083,9 +1368,20 @@
  		return;
  
  	tw32_f(GRC_EEPROM_ADDR,
-@@ -6311,8 +6890,8 @@
+@@ -6272,8 +6409,8 @@
+ 	}
+ }
+ 
+-static int __devinit tg3_nvram_read_using_eeprom(struct tg3 *tp,
+-						 u32 offset, u32 *val)
++static int tg3_nvram_read_using_eeprom(struct tg3 *tp,
++					u32 offset, u32 *val)
  {
+ 	u32 tmp;
  	int i;
+@@ -6311,8 +6448,8 @@
+ {
+ 	int i;
  
 -	if (tp->tg3_flags2 & TG3_FLG2_SUN_5704) {
 -		printk(KERN_ERR PFX "Attempt to do nvram_read on Sun 5704\n");
@@ -1094,7 +1390,7 @@
  		return -EINVAL;
  	}
  
-@@ -6374,10 +6953,10 @@
+@@ -6374,10 +6511,10 @@
  	{ PCI_VENDOR_ID_BROADCOM, 0x1644, PHY_ID_BCM5401 }, /* BCM95700A6 */
  	{ PCI_VENDOR_ID_BROADCOM, 0x0001, PHY_ID_BCM5701 }, /* BCM95701A5 */
  	{ PCI_VENDOR_ID_BROADCOM, 0x0002, PHY_ID_BCM8002 }, /* BCM95700T6 */
@@ -1107,7 +1403,7 @@
  	{ PCI_VENDOR_ID_BROADCOM, 0x0008, PHY_ID_BCM5701 }, /* BCM95701A10 */
  	{ PCI_VENDOR_ID_BROADCOM, 0x8008, PHY_ID_BCM5701 }, /* BCM95701A12 */
  	{ PCI_VENDOR_ID_BROADCOM, 0x0009, PHY_ID_BCM5703 }, /* BCM95703Ax1 */
-@@ -6386,7 +6965,7 @@
+@@ -6386,7 +6523,7 @@
  	/* 3com boards. */
  	{ PCI_VENDOR_ID_3COM, 0x1000, PHY_ID_BCM5401 }, /* 3C996T */
  	{ PCI_VENDOR_ID_3COM, 0x1006, PHY_ID_BCM5701 }, /* 3C996BT */
@@ -1116,7 +1412,7 @@
  	{ PCI_VENDOR_ID_3COM, 0x1007, PHY_ID_BCM5701 }, /* 3C1000T */
  	{ PCI_VENDOR_ID_3COM, 0x1008, PHY_ID_BCM5701 }, /* 3C940BR01 */
  
-@@ -6399,37 +6978,43 @@
+@@ -6399,37 +6536,43 @@
  	/* Compaq boards. */
  	{ PCI_VENDOR_ID_COMPAQ, 0x007c, PHY_ID_BCM5701 }, /* BANSHEE */
  	{ PCI_VENDOR_ID_COMPAQ, 0x009a, PHY_ID_BCM5701 }, /* BANSHEE_2 */
@@ -1153,14 +1449,14 @@
  	}
 +	return NULL;
 +}
- 
++
 +static int __devinit tg3_phy_probe(struct tg3 *tp)
 +{
 +	u32 eeprom_phy_id, hw_phy_id_1, hw_phy_id_2;
 +	u32 hw_phy_id, hw_phy_id_masked;
 +	u32 val;
 +	int eeprom_signature_found, eeprom_phy_serdes, err;
-+
+ 
 +	tp->phy_id = PHY_ID_INVALID;
  	eeprom_phy_id = PHY_ID_INVALID;
 +	eeprom_phy_serdes = 0;
@@ -1172,7 +1468,7 @@
  
  		tg3_read_mem(tp, NIC_SRAM_DATA_CFG, &nic_cfg);
  		tp->nic_sram_data_cfg = nic_cfg;
-@@ -6437,21 +7022,19 @@
+@@ -6437,21 +6580,19 @@
  		eeprom_signature_found = 1;
  
  		if ((nic_cfg & NIC_SRAM_DATA_CFG_PHY_TYPE_MASK) ==
@@ -1206,7 +1502,7 @@
  
  		if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5750) {
  			tg3_read_mem(tp, NIC_SRAM_DATA_CFG_2, &led_cfg);
-@@ -6513,6 +7096,10 @@
+@@ -6513,6 +6654,10 @@
  		}
  		if (nic_cfg & NIC_SRAM_DATA_CFG_FIBER_WOL)
  			tp->tg3_flags |= TG3_FLAG_SERDES_WOL_CAP;
@@ -1217,7 +1513,7 @@
  	}
  
  	/* Reading the PHY ID register can conflict with ASF
-@@ -6539,20 +7126,31 @@
+@@ -6539,20 +6684,31 @@
  
  	if (!err && KNOWN_PHY_ID(hw_phy_id_masked)) {
  		tp->phy_id = hw_phy_id;
@@ -1258,7 +1554,7 @@
  	    !(tp->tg3_flags & TG3_FLAG_ENABLE_ASF)) {
  		u32 bmsr, adv_reg, tg3_ctrl;
  
-@@ -6609,7 +7207,7 @@
+@@ -6609,7 +6765,7 @@
  	if (!eeprom_signature_found)
  		tp->led_ctrl = LED_CTRL_MODE_PHY_1;
  
@@ -1267,7 +1563,7 @@
  		tp->link_config.advertising =
  			(ADVERTISED_1000baseT_Half |
  			 ADVERTISED_1000baseT_Full |
-@@ -6628,11 +7226,11 @@
+@@ -6628,11 +6784,11 @@
  	unsigned char vpd_data[256];
  	int i;
  
@@ -1281,7 +1577,7 @@
  		return;
  	}
  
-@@ -6693,27 +7291,21 @@
+@@ -6693,27 +6849,21 @@
  }
  
  #ifdef CONFIG_SPARC64
@@ -1312,7 +1608,7 @@
  			return 1;
  	}
  	return 0;
-@@ -6730,8 +7322,8 @@
+@@ -6730,8 +6880,8 @@
  	int err;
  
  #ifdef CONFIG_SPARC64
@@ -1323,7 +1619,16 @@
  #endif
  
  	/* If we have an AMD 762 or Intel ICH/ICH0/ICH2 chipset, write
-@@ -6976,32 +7568,17 @@
+@@ -6957,7 +7107,7 @@
+ 		    chiprevid == CHIPREV_ID_5701_B0 ||
+ 		    chiprevid == CHIPREV_ID_5701_B2 ||
+ 		    chiprevid == CHIPREV_ID_5701_B5) {
+-			unsigned long sram_base;
++			void __iomem *sram_base;
+ 
+ 			/* Write some dummy words into the SRAM status block
+ 			 * area, see if it reads back correctly.  If the return
+@@ -6976,32 +7126,17 @@
  	udelay(50);
  	tg3_nvram_init(tp);
  
@@ -1359,8 +1664,18 @@
  	if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5705 &&
  	    (grc_misc_cfg == GRC_MISC_CFG_BOARD_ID_5788 ||
  	     grc_misc_cfg == GRC_MISC_CFG_BOARD_ID_5788M))
-@@ -7028,7 +7605,7 @@
+@@ -7016,7 +7151,8 @@
+ 	      tp->pdev->device == PCI_DEVICE_ID_TIGON3_5901_2 ||
+ 	      tp->pdev->device == PCI_DEVICE_ID_TIGON3_5705F)) ||
+ 	    (tp->pdev->vendor == PCI_VENDOR_ID_BROADCOM &&
+-	     tp->pdev->device == PCI_DEVICE_ID_TIGON3_5751F))
++	     (tp->pdev->device == PCI_DEVICE_ID_TIGON3_5751F ||
++	      tp->pdev->device == PCI_DEVICE_ID_TIGON3_5753F)))
+ 		tp->tg3_flags |= TG3_FLAG_10_100_ONLY;
  
+ 	err = tg3_phy_probe(tp);
+@@ -7028,7 +7164,7 @@
+ 
  	tg3_read_partno(tp);
  
 -	if (tp->phy_id == PHY_ID_SERDES) {
@@ -1368,7 +1683,7 @@
  		tp->tg3_flags &= ~TG3_FLAG_USE_MI_INTERRUPT;
  	} else {
  		if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5700)
-@@ -7051,13 +7628,13 @@
+@@ -7051,13 +7187,13 @@
  	 * upon subsystem IDs.
  	 */
  	if (tp->pdev->subsystem_vendor == PCI_VENDOR_ID_DELL &&
@@ -1384,7 +1699,7 @@
  		tp->tg3_flags |= TG3_FLAG_POLL_SERDES;
  	else
  		tp->tg3_flags &= ~TG3_FLAG_POLL_SERDES;
-@@ -7128,7 +7705,7 @@
+@@ -7128,7 +7264,7 @@
  
  	mac_offset = 0x7c;
  	if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5704 &&
@@ -1393,7 +1708,7 @@
  		if (tr32(TG3PCI_DUAL_MAC_CTRL) & DUAL_MAC_CTRL_ID)
  			mac_offset = 0xcc;
  		if (tg3_nvram_lock(tp))
-@@ -7150,7 +7727,7 @@
+@@ -7150,7 +7286,7 @@
  		dev->dev_addr[5] = (lo >>  0) & 0xff;
  	}
  	/* Next, try NVRAM. */
@@ -1402,7 +1717,17 @@
  		 !tg3_nvram_read(tp, mac_offset + 0, &hi) &&
  		 !tg3_nvram_read(tp, mac_offset + 4, &lo)) {
  		dev->dev_addr[0] = ((hi >> 16) & 0xff);
-@@ -7492,8 +8069,8 @@
+@@ -7323,7 +7459,8 @@
+ #endif
+ 
+ 	if (tp->tg3_flags2 & TG3_FLG2_PCI_EXPRESS) {
+-		tp->dma_rwctrl |= 0x001f0000;
++		/* DMA read watermark not used on PCIE */
++		tp->dma_rwctrl |= 0x00180000;
+ 	} else if (!(tp->tg3_flags & TG3_FLAG_PCIX_MODE)) {
+ 		if (GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5705 ||
+ 		    GET_ASIC_REV(tp->pci_chip_rev_id) == ASIC_REV_5750)
+@@ -7492,8 +7629,8 @@
  	case PHY_ID_BCM5704:	return "5704";
  	case PHY_ID_BCM5705:	return "5705";
  	case PHY_ID_BCM5750:	return "5750";
@@ -1413,7 +1738,33 @@
  	default:		return "unknown";
  	};
  }
-@@ -7785,6 +8339,9 @@
+@@ -7600,6 +7737,7 @@
+ 
+ 	if (pci_using_dac)
+ 		dev->features |= NETIF_F_HIGHDMA;
++	dev->features |= NETIF_F_LLTX;
+ #if TG3_VLAN_TAG_USED
+ 	dev->features |= NETIF_F_HW_VLAN_TX | NETIF_F_HW_VLAN_RX;
+ 	dev->vlan_rx_register = tg3_vlan_rx_register;
+@@ -7645,7 +7783,7 @@
+ 	spin_lock_init(&tp->indirect_lock);
+ 	INIT_WORK(&tp->reset_task, tg3_reset_task, tp);
+ 
+-	tp->regs = (unsigned long) ioremap(tg3reg_base, tg3reg_len);
++	tp->regs = ioremap_nocache(tg3reg_base, tg3reg_len);
+ 	if (tp->regs == 0UL) {
+ 		printk(KERN_ERR PFX "Cannot map device registers, "
+ 		       "aborting.\n");
+@@ -7762,7 +7900,7 @@
+ 	 */
+ 	if ((tr32(HOSTCC_MODE) & HOSTCC_MODE_ENABLE) ||
+ 	    (tr32(WDMAC_MODE) & WDMAC_MODE_ENABLE)) {
+-		pci_save_state(tp->pdev, tp->pci_cfg_state);
++		pci_save_state(tp->pdev);
+ 		tw32(MEMARB_MODE, MEMARB_MODE_ENABLE);
+ 		tg3_halt(tp);
+ 	}
+@@ -7785,6 +7923,9 @@
  	if (tp->tg3_flags2 & TG3_FLG2_IS_5788)
  		dev->features &= ~NETIF_F_HIGHDMA;
  
@@ -1423,7 +1774,16 @@
  	err = register_netdev(dev);
  	if (err) {
  		printk(KERN_ERR PFX "Cannot register net device, "
-@@ -7816,11 +8373,10 @@
+@@ -7798,7 +7939,7 @@
+ 	 * of the PCI config space.  We need to restore this after
+ 	 * GRC_MISC_CFG core clock resets and some resume events.
+ 	 */
+-	pci_save_state(tp->pdev, tp->pci_cfg_state);
++	pci_save_state(tp->pdev);
+ 
+ 	printk(KERN_INFO "%s: Tigon3 [partno(%s) rev %04x PHY(%s)] (PCI%s:%s:%s) %sBaseT Ethernet ",
+ 	       dev->name,
+@@ -7816,11 +7957,10 @@
  		printk("%2.2x%c", dev->dev_addr[i],
  		       i == 5 ? '\n' : ':');
  
@@ -1436,7 +1796,25 @@
  	       (tp->tg3_flags & TG3_FLAG_RX_CHECKSUMS) != 0,
  	       (tp->tg3_flags & TG3_FLAG_USE_LINKCHG_REG) != 0,
  	       (tp->tg3_flags & TG3_FLAG_USE_MI_INTERRUPT) != 0,
-@@ -7899,11 +8455,11 @@
+@@ -7832,7 +7972,7 @@
+ 	return 0;
+ 
+ err_out_iounmap:
+-	iounmap((void *) tp->regs);
++	iounmap(tp->regs);
+ 
+ err_out_free_dev:
+ 	free_netdev(dev);
+@@ -7854,7 +7994,7 @@
+ 		struct tg3 *tp = netdev_priv(dev);
+ 
+ 		unregister_netdev(dev);
+-		iounmap((void *)tp->regs);
++		iounmap(tp->regs);
+ 		free_netdev(dev);
+ 		pci_release_regions(pdev);
+ 		pci_disable_device(pdev);
+@@ -7899,11 +8039,11 @@
  		tp->timer.expires = jiffies + tp->timer_offset;
  		add_timer(&tp->timer);
  
@@ -1451,8 +1829,17 @@
  	}
  
  	return err;
-@@ -7936,11 +8492,11 @@
+@@ -7918,7 +8058,7 @@
+ 	if (!netif_running(dev))
+ 		return 0;
  
+-	pci_restore_state(tp->pdev, tp->pci_cfg_state);
++	pci_restore_state(tp->pdev);
+ 
+ 	err = tg3_set_power_state(tp, 0);
+ 	if (err)
+@@ -7936,11 +8076,11 @@
+ 
  	tg3_enable_ints(tp);
  
 +	tg3_netif_start(tp);

Modified: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/prune-non-free
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/prune-non-free	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/prune-non-free	2004-12-30 22:18:02 UTC (rev 2109)
@@ -11,6 +11,7 @@
 fi
 
 grep -h '^X' debian/patches/series/2.6.* | while read x file; do
+    echo "Deleting $file"
     rm -f $file
 done
 

Modified: trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/rules
===================================================================
--- trunk/kernel/source/kernel-source-2.6.9-2.6.9/debian/rules	2004-12-30 17:33:52 UTC (rev 2107)
+++ trunk/kernel/source/kernel-source-2.6.10-2.6.10/debian/rules	2004-12-30 22:18:02 UTC (rev 2109)
@@ -19,12 +19,13 @@
 	override_version=$(release) home=debian/patches sh debian/apply $(upstream)
 
 ../orig/kernel-source-$(upstream)-$(upstream):
-ifneq (,$(wildcard ../kernel-source-$(upstream)_$(upstream).orig.tar.gz))
-	mkdir -p ../orig
-	tar -C ../orig -xzf ../kernel-source-$(upstream)_$(upstream).orig.tar.gz
-else
-$(error "Can't find orig tarball.")
-endif
+	if [ -e "../kernel-source-$(upstream)_$(upstream).orig.tar.gz" ]; then \
+		mkdir -p ../orig; \
+		tar -C ../orig -xzf ../kernel-source-$(upstream)_$(upstream).orig.tar.gz; \
+	else \
+		echo "Can't find orig tarball." >&2; \
+		exit 1; \
+	fi
 
 orig: ../orig/kernel-source-$(upstream)-$(upstream)
 	rsync -av --delete --exclude .svn --exclude debian ../orig/kernel-source-$(upstream)-$(upstream)/ .
@@ -129,7 +130,7 @@
 	chmod u+x debian/prune-non-free
 	debian/prune-non-free
 	test $(notdir $(CURDIR)) = kernel-source-$(upstream)-$(upstream)
-	tar czCf .. $@ --exclude debian kernel-source-$(upstream)-$(upstream)
+	tar czCf .. $@ --exclude .svn --exclude debian kernel-source-$(upstream)-$(upstream)
 
 # unpack the vanilla kernel from a tarball, move stuff over, and create a stamp file
 debian/official: ../linux-$(upstream).tar.bz2