[PATCH 1/1] SRU: Add backported igb-next driver

Stefan Bader stefan.bader at canonical.com
Tue Sep 1 10:06:21 UTC 2009


This patch shows the differences between the standard standalone driver and
the code in LUM. Larger changes result from moving COPYING and README files
from a higher level directory to the sources.

diff -Nurp igb-1.3.28.4/src/BOM /home/stefan/src/ubuntu-hardy/lum/ubuntu/net/igb-next/BOM
--- igb-1.3.28.4/src/BOM	1970-01-01 01:00:00.000000000 +0100
+++ /home/stefan/src/ubuntu-hardy/lum/ubuntu/net/igb-next/BOM	2009-08-26 15:08:19.000000000 +0200
@@ -0,0 +1,8 @@
+Description: Intel IGB standalone driver
+Source:      http://sourceforge.net/projects/e1000/files/igb%20stable/1.3.28.4/
+Version:     1.3.28.4
+
+The driver has been modified to produce a differently named module and to
+exclude the PCI IDs which are handled by the igb driver originally shipped
+with Hardy-LUM.
+
diff -Nurp igb-1.3.28.4/src/COPYING /home/stefan/src/ubuntu-hardy/lum/ubuntu/net/igb-next/COPYING
--- igb-1.3.28.4/src/COPYING	1970-01-01 01:00:00.000000000 +0100
+++ /home/stefan/src/ubuntu-hardy/lum/ubuntu/net/igb-next/COPYING	2009-08-26 15:08:19.000000000 +0200
@@ -0,0 +1,339 @@
+
+"This software program is licensed subject to the GNU General Public License 
+(GPL). Version 2, June 1991, available at 
+<http://www.fsf.org/copyleft/gpl.html>"
+
+GNU General Public License 
+
+Version 2, June 1991
+
+Copyright (C) 1989, 1991 Free Software Foundation, Inc.  
+59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
+
+Everyone is permitted to copy and distribute verbatim copies of this license
+document, but changing it is not allowed.
+
+Preamble
+
+The licenses for most software are designed to take away your freedom to 
+share and change it. By contrast, the GNU General Public License is intended
+to guarantee your freedom to share and change free software--to make sure 
+the software is free for all its users. This General Public License applies 
+to most of the Free Software Foundation's software and to any other program 
+whose authors commit to using it. (Some other Free Software Foundation 
+software is covered by the GNU Library General Public License instead.) You 
+can apply it to your programs, too.
+
+When we speak of free software, we are referring to freedom, not price. Our
+General Public Licenses are designed to make sure that you have the freedom 
+to distribute copies of free software (and charge for this service if you 
+wish), that you receive source code or can get it if you want it, that you 
+can change the software or use pieces of it in new free programs; and that 
+you know you can do these things.
+
+To protect your rights, we need to make restrictions that forbid anyone to 
+deny you these rights or to ask you to surrender the rights. These 
+restrictions translate to certain responsibilities for you if you distribute
+copies of the software, or if you modify it.
+
+For example, if you distribute copies of such a program, whether gratis or 
+for a fee, you must give the recipients all the rights that you have. You 
+must make sure that they, too, receive or can get the source code. And you 
+must show them these terms so they know their rights.
+ 
+We protect your rights with two steps: (1) copyright the software, and (2) 
+offer you this license which gives you legal permission to copy, distribute 
+and/or modify the software. 
+
+Also, for each author's protection and ours, we want to make certain that 
+everyone understands that there is no warranty for this free software. If 
+the software is modified by someone else and passed on, we want its 
+recipients to know that what they have is not the original, so that any 
+problems introduced by others will not reflect on the original authors' 
+reputations. 
+
+Finally, any free program is threatened constantly by software patents. We 
+wish to avoid the danger that redistributors of a free program will 
+individually obtain patent licenses, in effect making the program 
+proprietary. To prevent this, we have made it clear that any patent must be 
+licensed for everyone's free use or not licensed at all. 
+
+The precise terms and conditions for copying, distribution and modification 
+follow. 
+
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. This License applies to any program or other work which contains a notice
+   placed by the copyright holder saying it may be distributed under the 
+   terms of this General Public License. The "Program", below, refers to any
+   such program or work, and a "work based on the Program" means either the 
+   Program or any derivative work under copyright law: that is to say, a 
+   work containing the Program or a portion of it, either verbatim or with 
+   modifications and/or translated into another language. (Hereinafter, 
+   translation is included without limitation in the term "modification".) 
+   Each licensee is addressed as "you". 
+
+   Activities other than copying, distribution and modification are not 
+   covered by this License; they are outside its scope. The act of running 
+   the Program is not restricted, and the output from the Program is covered 
+   only if its contents constitute a work based on the Program (independent 
+   of having been made by running the Program). Whether that is true depends
+   on what the Program does. 
+
+1. You may copy and distribute verbatim copies of the Program's source code 
+   as you receive it, in any medium, provided that you conspicuously and 
+   appropriately publish on each copy an appropriate copyright notice and 
+   disclaimer of warranty; keep intact all the notices that refer to this 
+   License and to the absence of any warranty; and give any other recipients 
+   of the Program a copy of this License along with the Program. 
+
+   You may charge a fee for the physical act of transferring a copy, and you 
+   may at your option offer warranty protection in exchange for a fee. 
+
+2. You may modify your copy or copies of the Program or any portion of it, 
+   thus forming a work based on the Program, and copy and distribute such 
+   modifications or work under the terms of Section 1 above, provided that 
+   you also meet all of these conditions: 
+
+   * a) You must cause the modified files to carry prominent notices stating 
+        that you changed the files and the date of any change. 
+
+   * b) You must cause any work that you distribute or publish, that in 
+        whole or in part contains or is derived from the Program or any part 
+        thereof, to be licensed as a whole at no charge to all third parties
+        under the terms of this License. 
+
+   * c) If the modified program normally reads commands interactively when 
+        run, you must cause it, when started running for such interactive 
+        use in the most ordinary way, to print or display an announcement 
+        including an appropriate copyright notice and a notice that there is
+        no warranty (or else, saying that you provide a warranty) and that 
+        users may redistribute the program under these conditions, and 
+        telling the user how to view a copy of this License. (Exception: if 
+        the Program itself is interactive but does not normally print such 
+        an announcement, your work based on the Program is not required to 
+        print an announcement.) 
+
+   These requirements apply to the modified work as a whole. If identifiable 
+   sections of that work are not derived from the Program, and can be 
+   reasonably considered independent and separate works in themselves, then 
+   this License, and its terms, do not apply to those sections when you 
+   distribute them as separate works. But when you distribute the same 
+   sections as part of a whole which is a work based on the Program, the 
+   distribution of the whole must be on the terms of this License, whose 
+   permissions for other licensees extend to the entire whole, and thus to 
+   each and every part regardless of who wrote it. 
+
+   Thus, it is not the intent of this section to claim rights or contest 
+   your rights to work written entirely by you; rather, the intent is to 
+   exercise the right to control the distribution of derivative or 
+   collective works based on the Program. 
+
+   In addition, mere aggregation of another work not based on the Program 
+   with the Program (or with a work based on the Program) on a volume of a 
+   storage or distribution medium does not bring the other work under the 
+   scope of this License. 
+
+3. You may copy and distribute the Program (or a work based on it, under 
+   Section 2) in object code or executable form under the terms of Sections 
+   1 and 2 above provided that you also do one of the following: 
+
+   * a) Accompany it with the complete corresponding machine-readable source 
+        code, which must be distributed under the terms of Sections 1 and 2 
+        above on a medium customarily used for software interchange; or, 
+
+   * b) Accompany it with a written offer, valid for at least three years, 
+        to give any third party, for a charge no more than your cost of 
+        physically performing source distribution, a complete machine-
+        readable copy of the corresponding source code, to be distributed 
+        under the terms of Sections 1 and 2 above on a medium customarily 
+        used for software interchange; or, 
+
+   * c) Accompany it with the information you received as to the offer to 
+        distribute corresponding source code. (This alternative is allowed 
+        only for noncommercial distribution and only if you received the 
+        program in object code or executable form with such an offer, in 
+        accord with Subsection b above.) 
+
+   The source code for a work means the preferred form of the work for 
+   making modifications to it. For an executable work, complete source code 
+   means all the source code for all modules it contains, plus any 
+   associated interface definition files, plus the scripts used to control 
+   compilation and installation of the executable. However, as a special 
+   exception, the source code distributed need not include anything that is 
+   normally distributed (in either source or binary form) with the major 
+   components (compiler, kernel, and so on) of the operating system on which
+   the executable runs, unless that component itself accompanies the 
+   executable. 
+
+   If distribution of executable or object code is made by offering access 
+   to copy from a designated place, then offering equivalent access to copy 
+   the source code from the same place counts as distribution of the source 
+   code, even though third parties are not compelled to copy the source 
+   along with the object code. 
+
+4. You may not copy, modify, sublicense, or distribute the Program except as
+   expressly provided under this License. Any attempt otherwise to copy, 
+   modify, sublicense or distribute the Program is void, and will 
+   automatically terminate your rights under this License. However, parties 
+   who have received copies, or rights, from you under this License will not
+   have their licenses terminated so long as such parties remain in full 
+   compliance. 
+
+5. You are not required to accept this License, since you have not signed 
+   it. However, nothing else grants you permission to modify or distribute 
+   the Program or its derivative works. These actions are prohibited by law 
+   if you do not accept this License. Therefore, by modifying or 
+   distributing the Program (or any work based on the Program), you 
+   indicate your acceptance of this License to do so, and all its terms and
+   conditions for copying, distributing or modifying the Program or works 
+   based on it. 
+
+6. Each time you redistribute the Program (or any work based on the 
+   Program), the recipient automatically receives a license from the 
+   original licensor to copy, distribute or modify the Program subject to 
+   these terms and conditions. You may not impose any further restrictions 
+   on the recipients' exercise of the rights granted herein. You are not 
+   responsible for enforcing compliance by third parties to this License. 
+
+7. If, as a consequence of a court judgment or allegation of patent 
+   infringement or for any other reason (not limited to patent issues), 
+   conditions are imposed on you (whether by court order, agreement or 
+   otherwise) that contradict the conditions of this License, they do not 
+   excuse you from the conditions of this License. If you cannot distribute 
+   so as to satisfy simultaneously your obligations under this License and 
+   any other pertinent obligations, then as a consequence you may not 
+   distribute the Program at all. For example, if a patent license would 
+   not permit royalty-free redistribution of the Program by all those who 
+   receive copies directly or indirectly through you, then the only way you 
+   could satisfy both it and this License would be to refrain entirely from 
+   distribution of the Program. 
+
+   If any portion of this section is held invalid or unenforceable under any
+   particular circumstance, the balance of the section is intended to apply
+   and the section as a whole is intended to apply in other circumstances. 
+
+   It is not the purpose of this section to induce you to infringe any 
+   patents or other property right claims or to contest validity of any 
+   such claims; this section has the sole purpose of protecting the 
+   integrity of the free software distribution system, which is implemented 
+   by public license practices. Many people have made generous contributions
+   to the wide range of software distributed through that system in 
+   reliance on consistent application of that system; it is up to the 
+   author/donor to decide if he or she is willing to distribute software 
+   through any other system and a licensee cannot impose that choice. 
+
+   This section is intended to make thoroughly clear what is believed to be 
+   a consequence of the rest of this License. 
+
+8. If the distribution and/or use of the Program is restricted in certain 
+   countries either by patents or by copyrighted interfaces, the original 
+   copyright holder who places the Program under this License may add an 
+   explicit geographical distribution limitation excluding those countries, 
+   so that distribution is permitted only in or among countries not thus 
+   excluded. In such case, this License incorporates the limitation as if 
+   written in the body of this License. 
+
+9. The Free Software Foundation may publish revised and/or new versions of 
+   the General Public License from time to time. Such new versions will be 
+   similar in spirit to the present version, but may differ in detail to 
+   address new problems or concerns. 
+
+   Each version is given a distinguishing version number. If the Program 
+   specifies a version number of this License which applies to it and "any 
+   later version", you have the option of following the terms and 
+   conditions either of that version or of any later version published by 
+   the Free Software Foundation. If the Program does not specify a version 
+   number of this License, you may choose any version ever published by the 
+   Free Software Foundation. 
+
+10. If you wish to incorporate parts of the Program into other free programs
+    whose distribution conditions are different, write to the author to ask 
+    for permission. For software which is copyrighted by the Free Software 
+    Foundation, write to the Free Software Foundation; we sometimes make 
+    exceptions for this. Our decision will be guided by the two goals of 
+    preserving the free status of all derivatives of our free software and 
+    of promoting the sharing and reuse of software generally. 
+
+   NO WARRANTY
+
+11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 
+    FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 
+    OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 
+    PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER 
+    EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 
+    WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE 
+    ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH 
+    YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL 
+    NECESSARY SERVICING, REPAIR OR CORRECTION. 
+
+12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 
+    WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 
+    REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR 
+    DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL 
+    DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM 
+    (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED 
+    INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF 
+    THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR 
+    OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 
+
+END OF TERMS AND CONDITIONS
+
+How to Apply These Terms to Your New Programs
+
+If you develop a new program, and you want it to be of the greatest 
+possible use to the public, the best way to achieve this is to make it free 
+software which everyone can redistribute and change under these terms. 
+
+To do so, attach the following notices to the program. It is safest to 
+attach them to the start of each source file to most effectively convey the
+exclusion of warranty; and each file should have at least the "copyright" 
+line and a pointer to where the full notice is found. 
+
+one line to give the program's name and an idea of what it does.
+Copyright (C) yyyy  name of author
+
+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.
+
+Also add information on how to contact you by electronic and paper mail. 
+
+If the program is interactive, make it output a short notice like this when 
+it starts in an interactive mode: 
+
+Gnomovision version 69, Copyright (C) year name of author Gnomovision comes 
+with ABSOLUTELY NO WARRANTY; for details type 'show w'.  This is free 
+software, and you are welcome to redistribute it under certain conditions; 
+type 'show c' for details.
+
+The hypothetical commands 'show w' and 'show c' should show the appropriate 
+parts of the General Public License. Of course, the commands you use may be 
+called something other than 'show w' and 'show c'; they could even be 
+mouse-clicks or menu items--whatever suits your program. 
+
+You should also get your employer (if you work as a programmer) or your 
+school, if any, to sign a "copyright disclaimer" for the program, if 
+necessary. Here is a sample; alter the names: 
+
+Yoyodyne, Inc., hereby disclaims all copyright interest in the program 
+'Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+signature of Ty Coon, 1 April 1989
+Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into 
+proprietary programs. If your program is a subroutine library, you may 
+consider it more useful to permit linking proprietary applications with the 
+library. If this is what you want to do, use the GNU Library General Public 
+License instead of this License.
diff -Nurp igb-1.3.28.4/src/igb_main.c /home/stefan/src/ubuntu-hardy/lum/ubuntu/net/igb-next/igb_main.c
--- igb-1.3.28.4/src/igb_main.c	2009-07-02 03:00:59.000000000 +0200
+++ /home/stefan/src/ubuntu-hardy/lum/ubuntu/net/igb-next/igb_main.c	2009-08-26 15:08:20.000000000 +0200
@@ -55,7 +55,7 @@
 
 #define DRV_VERSION "1.3.28.4" VERSION_SUFFIX DRV_DEBUG DRV_HW_PERF
 
-char igb_driver_name[] = "igb";
+char igb_driver_name[] = "igb-next";
 char igb_driver_version[] = DRV_VERSION;
 static const char igb_driver_string[] =
                                 "Intel(R) Gigabit Ethernet Network Driver";
@@ -68,9 +68,6 @@ static struct pci_device_id igb_pci_tbl[
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_SERDES) },
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_SERDES_QUAD) },
 	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82576_QUAD_COPPER) },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82575EB_COPPER) },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82575EB_FIBER_SERDES) },
-	{ PCI_VDEVICE(INTEL, E1000_DEV_ID_82575GB_QUAD_COPPER) },
 	/* required last entry */
 	{0, }
 };
diff -Nurp igb-1.3.28.4/src/Makefile /home/stefan/src/ubuntu-hardy/lum/ubuntu/net/igb-next/Makefile
--- igb-1.3.28.4/src/Makefile	2009-07-02 03:00:59.000000000 +0200
+++ /home/stefan/src/ubuntu-hardy/lum/ubuntu/net/igb-next/Makefile	2009-08-26 15:08:20.000000000 +0200
@@ -25,329 +25,8 @@
 #
 ################################################################################
 
-###########################################################################
-# Driver files
-FAMILYC = e1000_82575.c
-FAMILYH = e1000_82575.h
+obj-m		+= igb-next.o
 
-# core driver files
-CFILES = igb_main.c $(FAMILYC) e1000_mac.c e1000_nvm.c e1000_phy.c \
-	 e1000_manage.c igb_param.c igb_ethtool.c kcompat.c e1000_api.c
-HFILES = igb.h e1000_hw.h e1000_osdep.h e1000_defines.h e1000_mac.h \
-	 e1000_nvm.h e1000_manage.h $(FAMILYH) kcompat.h e1000_regs.h \
-	 e1000_api.h igb_regtest.h
-ifeq (,$(BUILD_KERNEL))
-BUILD_KERNEL=$(shell uname -r)
-endif
-
-DRIVER_NAME=igb
-###########################################################################
-# Environment tests
-
-# Kernel Search Path
-# All the places we look for kernel source
-KSP :=  /lib/modules/$(BUILD_KERNEL)/build \
-        /lib/modules/$(BUILD_KERNEL)/source \
-        /usr/src/linux-$(BUILD_KERNEL) \
-        /usr/src/linux-$($(BUILD_KERNEL) | sed 's/-.*//') \
-        /usr/src/kernel-headers-$(BUILD_KERNEL) \
-        /usr/src/kernel-source-$(BUILD_KERNEL) \
-        /usr/src/linux-$($(BUILD_KERNEL) | sed 's/\([0-9]*\.[0-9]*\)\..*/\1/') \
-        /usr/src/linux
-
-# prune the list down to only values that exist
-# and have an include/linux sub-directory
-test_dir = $(shell [ -e $(dir)/include/linux ] && echo $(dir))
-KSP := $(foreach dir, $(KSP), $(test_dir))
-
-# we will use this first valid entry in the search path
-ifeq (,$(KSRC))
-  KSRC := $(firstword $(KSP))
-endif
-
-ifeq (,$(KSRC))
-  $(warning *** Linux kernel source not found in any of these locations:)
-  $(warning $(KSP))
-  $(warning *** Install the appropriate kernel development package, e.g.)
-  $(error kernel-devel, for building kernel modules and try again)
-else
-ifeq (/lib/modules/$(shell uname -r)/source, $(KSRC))
-  KOBJ :=  /lib/modules/$(shell uname -r)/build
-else
-  KOBJ :=  $(KSRC)
-endif
-endif
-
-# check for version.h and autoconf.h for running kernel in /boot (SUSE)
-ifneq (,$(wildcard /boot/vmlinuz.version.h))
-  VERSION_FILE := /boot/vmlinuz.version.h
-  CONFIG_FILE  := /boot/vmlinuz.autoconf.h
-  KVER := $(shell $(CC) $(EXTRA_CFLAGS) -E -dM $(VERSION_FILE) | \
-          grep UTS_RELEASE | awk '{ print $$3 }' | sed 's/\"//g')
-  ifeq ($(KVER),$(shell uname -r))
-    # set up include path to override headers from kernel source
-    x:=$(shell rm -rf include)
-    x:=$(shell mkdir -p include/linux)
-    x:=$(shell cp /boot/vmlinuz.version.h include/linux/version.h)
-    x:=$(shell cp /boot/vmlinuz.autoconf.h include/linux/autoconf.h)
-    EXTRA_CFLAGS += -I./include
-  else
-    ifneq (,$(wildcard $(KOBJ)/include/linux/utsrelease.h))
-      VERSION_FILE := $(KOBJ)/include/linux/utsrelease.h
-    else
-      VERSION_FILE := $(KOBJ)/include/linux/version.h
-    endif
-    CONFIG_FILE  := $(KSRC)/include/linux/autoconf.h
-  endif
-else
-  ifneq (,$(wildcard $(KOBJ)/include/linux/utsrelease.h))
-    VERSION_FILE := $(KOBJ)/include/linux/utsrelease.h
-  else
-    VERSION_FILE := $(KOBJ)/include/linux/version.h
-  endif
-  CONFIG_FILE  := $(KSRC)/include/linux/autoconf.h
-endif
-
-ifeq (,$(wildcard $(VERSION_FILE)))
-  $(error Linux kernel source not configured - missing version.h)
-endif
-
-ifeq (,$(wildcard $(CONFIG_FILE)))
-  $(error Linux kernel source not configured - missing autoconf.h)
-endif
-
-# pick a compiler
-ifneq (,$(findstring egcs-2.91.66, $(shell cat /proc/version)))
-  CC := kgcc gcc cc
-else
-  CC := gcc cc
-endif
-test_cc = $(shell $(cc) --version > /dev/null 2>&1 && echo $(cc))
-CC := $(foreach cc, $(CC), $(test_cc))
-CC := $(firstword $(CC))
-ifeq (,$(CC))
-  $(error Compiler not found)
-endif
-
-# we need to know what platform the driver is being built on
-# some additional features are only built on Intel platforms
-ARCH := $(shell uname -m | sed 's/i.86/i386/')
-ifeq ($(ARCH),alpha)
-  EXTRA_CFLAGS += -ffixed-8 -mno-fp-regs
-endif
-ifeq ($(ARCH),x86_64)
-  EXTRA_CFLAGS += -mcmodel=kernel -mno-red-zone
-endif
-ifeq ($(ARCH),ppc)
-  EXTRA_CFLAGS += -msoft-float
-endif
-ifeq ($(ARCH),ppc64)
-  EXTRA_CFLAGS += -m64 -msoft-float
-  LDFLAGS += -melf64ppc
-endif
-ifneq (,$(findstring NO_82542_SUPPORT, $(CFLAGS_EXTRA)))
-  CFILES := $(filter-out e1000_82542.c, $(CFILES))
-endif
-
-# extra flags for module builds
-EXTRA_CFLAGS += -DDRIVER_$(shell echo $(DRIVER_NAME) | tr '[a-z]' '[A-Z]')
-EXTRA_CFLAGS += -DDRIVER_NAME=$(DRIVER_NAME)
-EXTRA_CFLAGS += -DDRIVER_NAME_CAPS=$(shell echo $(DRIVER_NAME) | tr '[a-z]' '[A-Z]')
-# standard flags for module builds
-EXTRA_CFLAGS += -DLINUX -D__KERNEL__ -DMODULE -O2 -pipe -Wall
-EXTRA_CFLAGS += -I$(KSRC)/include -I.
-EXTRA_CFLAGS += $(shell [ -f $(KSRC)/include/linux/modversions.h ] && \
-            echo "-DMODVERSIONS -DEXPORT_SYMTAB \
-                  -include $(KSRC)/include/linux/modversions.h")
-
-EXTRA_CFLAGS += $(CFLAGS_EXTRA)
-
-RHC := $(KSRC)/include/linux/rhconfig.h
-ifneq (,$(wildcard $(RHC)))
-  # 7.3 typo in rhconfig.h
-  ifneq (,$(shell $(CC) $(EXTRA_CFLAGS) -E -dM $(RHC) | grep __module__bigmem))
-	EXTRA_CFLAGS += -D__module_bigmem
-  endif
-endif
-
-# get the kernel version - we use this to find the correct install path
-KVER := $(shell $(CC) $(EXTRA_CFLAGS) -E -dM $(VERSION_FILE) | grep UTS_RELEASE | \
-        awk '{ print $$3 }' | sed 's/\"//g')
-
-# assume source symlink is the same as build, otherwise adjust KOBJ
-ifneq (,$(wildcard /lib/modules/$(KVER)/build))
-ifneq ($(KSRC),$(shell readlink /lib/modules/$(KVER)/build))
-  KOBJ=/lib/modules/$(KVER)/build
-endif
-endif
-
-KKVER := $(shell echo $(KVER) | \
-         awk '{ if ($$0 ~ /2\.[4-9]\./) print "1"; else print "0"}')
-ifeq ($(KKVER), 0)
-  $(error *** Aborting the build. \
-          *** This driver is not supported on kernel versions older than 2.4.0)
-endif
-
-# look for PCI in config.h
-PCI := $(shell $(CC) $(EXTRA_CFLAGS) -E -dM $(CONFIG_FILE) | \
-         grep -w CONFIG_PCI | awk '{ print $$3 }')
-ifneq ($(PCI),1)
-  $(error *** Aborting the build. \
-          *** This driver requires that CONFIG_PCI is enabled)
-endif
-
-# set the install path
-INSTDIR := /lib/modules/$(KVER)/kernel/drivers/net/$(DRIVER_NAME)
-
-# look for SMP in config.h
-SMP := $(shell $(CC) $(EXTRA_CFLAGS) -E -dM $(CONFIG_FILE) | \
-         grep -w CONFIG_SMP | awk '{ print $$3 }')
-ifneq ($(SMP),1)
-  SMP := 0
-endif
-
-ifneq ($(SMP),$(shell uname -a | grep SMP > /dev/null 2>&1 && echo 1 || echo 0))
-  $(warning ***)
-  ifeq ($(SMP),1)
-    $(warning *** Warning: kernel source configuration (SMP))
-    $(warning *** does not match running kernel (UP))
-  else
-    $(warning *** Warning: kernel source configuration (UP))
-    $(warning *** does not match running kernel (SMP))
-  endif
-  $(warning *** Continuing with build,)
-  $(warning *** resulting driver may not be what you want)
-  $(warning ***)
-endif
-
-ifeq ($(SMP),1)
-  EXTRA_CFLAGS += -D__SMP__
-endif
-
-###########################################################################
-# 2.4.x & 2.6.x Specific rules
-
-K_VERSION:=$(shell uname -r | cut -c1-3 | sed 's/2\.[56]/2\.6/')
-
-ifeq ($(K_VERSION), 2.6)
-
-# Makefile for 2.6.x kernel
-TARGET = $(DRIVER_NAME).ko
-
-# man page
-MANSECTION = 7
-MANFILE = $(TARGET:.ko=.$(MANSECTION))
-
-ifneq ($(PATCHLEVEL),)
-EXTRA_CFLAGS += $(CFLAGS_EXTRA)
-obj-m += $(DRIVER_NAME).o
-$(DRIVER_NAME)-objs := $(CFILES:.c=.o)
-else
-default:
-ifeq ($(KOBJ),$(KSRC))
-	$(MAKE) -C $(KSRC) SUBDIRS=$(shell pwd) modules
-else
-	$(MAKE) -C $(KSRC) O=$(KOBJ) SUBDIRS=$(shell pwd) modules
-endif
-endif
-
-else # ifeq ($(K_VERSION),2.6)
-
-# Makefile for 2.4.x kernel
-TARGET = $(DRIVER_NAME).o
-
-# man page
-MANSECTION = 7
-MANFILE = $(TARGET:.o=.$(MANSECTION))
-
-# Get rid of compile warnings in kernel header files from SuSE
-ifneq (,$(wildcard /etc/SuSE-release))
-  EXTRA_CFLAGS += -Wno-sign-compare -fno-strict-aliasing
-endif
-
-# Get rid of compile warnings in kernel header files from fedora
-ifneq (,$(wildcard /etc/fedora-release))
-  EXTRA_CFLAGS += -fno-strict-aliasing
-endif
-
-CFLAGS += $(EXTRA_CFLAGS)
-
-.SILENT: $(TARGET)
-$(TARGET): $(filter-out $(TARGET), $(CFILES:.c=.o))
-	$(LD) $(LDFLAGS) -r $^ -o $@
-	echo; echo
-	echo "**************************************************"
-	echo "** $(TARGET) built for $(KVER)"
-	echo -n "** SMP               "
-	if [ "$(SMP)" = "1" ]; \
-		then echo "Enabled"; else echo "Disabled"; fi
-	echo "**************************************************"
-	echo
-
-$(CFILES:.c=.o): $(HFILES) Makefile
-default:
-	$(MAKE)
-
-endif # ifeq ($(K_VERSION),2.6)
-
-ifeq (,$(MANDIR))
-  # find the best place to install the man page
-  MANPATH := $(shell (manpath 2>/dev/null || echo $MANPATH) | sed 's/:/ /g')
-  ifneq (,$(MANPATH))
-    # test based on inclusion in MANPATH
-    test_dir = $(findstring $(dir), $(MANPATH))
-  else
-    # no MANPATH, test based on directory existence
-    test_dir = $(shell [ -e $(dir) ] && echo $(dir))
-  endif
-  # our preferred install path
-  # should /usr/local/man be in here ?
-  MANDIR := /usr/share/man /usr/man
-  MANDIR := $(foreach dir, $(MANDIR), $(test_dir))
-  MANDIR := $(firstword $(MANDIR))
-endif
-ifeq (,$(MANDIR))
-  # fallback to /usr/man
-  MANDIR := /usr/man
-endif
-
-# depmod version for rpm builds
-DEPVER := $(shell /sbin/depmod -V 2>/dev/null | \
-          awk 'BEGIN {FS="."} NR==1 {print $$2}')
-
-###########################################################################
-# Build rules
-
-$(MANFILE).gz: ../$(MANFILE)
-	gzip -c $< > $@
-
-install: default $(MANFILE).gz
-	# remove all old versions of the driver
-	find $(INSTALL_MOD_PATH)/lib/modules/$(KVER) -name $(TARGET) -exec rm -f {} \; || true
-	find $(INSTALL_MOD_PATH)/lib/modules/$(KVER) -name $(TARGET).gz -exec rm -f {} \; || true
-	install -D -m 644 $(TARGET) $(INSTALL_MOD_PATH)$(INSTDIR)/$(TARGET)
-ifeq (,$(INSTALL_MOD_PATH))
-	/sbin/depmod -a || true
-else
-  ifeq ($(DEPVER),1 )
-	/sbin/depmod -r $(INSTALL_MOD_PATH) -a || true
-  else
-	/sbin/depmod -b $(INSTALL_MOD_PATH) -a -n $(KVERSION) > /dev/null || true
-  endif
-endif
-	install -D -m 644 $(MANFILE).gz $(INSTALL_MOD_PATH)$(MANDIR)/man$(MANSECTION)/$(MANFILE).gz
-	man -c -P'cat > /dev/null' $(MANFILE:.$(MANSECTION)=) || true
-
-uninstall:
-	if [ -e $(INSTDIR)/$(TARGET) ] ; then \
-	    rm -f $(INSTDIR)/$(TARGET) ; \
-	fi
-	/sbin/depmod -a
-	if [ -e $(MANDIR)/man$(MANSECTION)/$(MANFILE).gz ] ; then \
-		rm -f $(MANDIR)/man$(MANSECTION)/$(MANFILE).gz ; \
-	fi
-
-.PHONY: clean install
-
-clean:
-	rm -rf $(TARGET) $(TARGET:.ko=.o) $(TARGET:.ko=.mod.c) $(TARGET:.ko=.mod.o) $(CFILES:.c=.o) $(MANFILE).gz .*cmd .tmp_versions
+igb-next-objs	:= igb_main.o e1000_82575.o e1000_mac.o e1000_nvm.o \
+			e1000_phy.o e1000_manage.o igb_param.o igb_ethtool.o \
+			kcompat.o e1000_api.o
diff -Nurp igb-1.3.28.4/src/README /home/stefan/src/ubuntu-hardy/lum/ubuntu/net/igb-next/README
--- igb-1.3.28.4/src/README	1970-01-01 01:00:00.000000000 +0100
+++ /home/stefan/src/ubuntu-hardy/lum/ubuntu/net/igb-next/README	2009-08-26 15:08:19.000000000 +0200
@@ -0,0 +1,651 @@
+Linux* Base Driver for Intel(R) Network Connection
+==================================================
+
+February 24, 2009
+
+
+Contents
+========
+
+- In This Release
+- Identifying Your Adapter
+- Building and Installation
+- Command Line Parameters
+- Additional Configurations
+- Known Issues/Troubleshooting
+- Support
+
+
+In This Release
+===============
+
+This file describes the igb Linux* Base Driver for Intel Network Connection.  
+This driver supports kernel versions 2.4.x and 2.6.x. 
+
+This driver is only supported as a loadable module at this time.  Intel is
+not supplying patches against the kernel source to allow for static linking
+of the driver.  For questions related to hardware requirements, refer to the
+documentation supplied with your Intel Gigabit adapter.  All hardware
+requirements listed apply to use with Linux.
+
+This release includes support for Intel(R) I/O Acceleration Technology,
+Intel(R) I/OAT.  You can find additional information on Intel I/OAT at 
+http://www.intel.com/technology/ioacceleration/index.htm.
+
+The following features are now available in supported kernels:
+ - Native VLANs
+ - Channel Bonding (teaming)
+ - SNMP
+
+Channel Bonding documentation can be found in the Linux kernel source:
+/Documentation/networking/bonding.txt
+
+The driver information previously displayed in the /proc filesystem is not
+supported in this release.  Alternatively, you can use ethtool (version 1.6
+or later), lspci, and ifconfig to obtain the same information.
+
+Instructions on updating ethtool can be found in the section "Additional
+Configurations" later in this document.
+
+Identifying Your Adapter
+========================
+
+For more information on how to identify your adapter, go to the Adapter &
+Driver ID Guide at:
+
+    http://support.intel.com/support/go/network/adapter/idguide.htm
+
+For the latest Intel network drivers for Linux, refer to the following
+website.  In the search field, enter your adapter name or type, or use the
+networking link on the left to search for your adapter:
+
+    http://downloadcenter.intel.com/scripts-df-external/Support_Intel.aspx
+
+
+Building and Installation
+=========================
+
+To build a binary RPM* package of this driver, run 'rpmbuild -tb
+<filename.tar.gz>'.  Replace <filename.tar.gz> with the specific filename
+of the driver.
+
+NOTE: For the build to work properly, the currently running kernel MUST
+      match the version and configuration of the installed kernel sources.
+      If you have just recompiled the kernel reboot the system now.
+
+      RPM functionality has only been tested in Red Hat distributions.
+
+1. Move the base driver tar file to the directory of your choice.  For
+   example, use /home/username/igb or /usr/local/src/igb.
+
+2. Untar/unzip archive:
+
+     tar zxf igb-x.x.x.tar.gz
+
+3. Change to the driver src directory:
+
+     cd igb-x.x.x/src/
+
+4. Compile the driver module:
+
+     make install
+
+   The binary will be installed as:
+
+     /lib/modules/<KERNEL VERSION>/kernel/drivers/net/igb/igb.[k]o
+
+   The install locations listed above are the default locations.  They
+   might not be correct for certain Linux distributions.  
+
+5. Load the module using either the insmod or modprobe command:
+
+     modprobe igb
+
+     insmod igb
+
+   Note that for 2.6 kernels the insmod command can be used if the full
+   path to the driver module is specified.  For example:
+
+     insmod /lib/modules/<KERNEL VERSION>/kernel/drivers/net/igb/igb.ko
+
+   With 2.6 based kernels also make sure that older igb drivers are
+   removed from the kernel, before loading the new module:
+
+     rmmod igb; modprobe igb
+
+6. Assign an IP address to the interface by entering the following, where
+   x is the interface number:
+
+     ifconfig ethx <IP_address>
+
+7. Verify that the interface works.  Enter the following, where <IP_address>
+   is the IP address for another machine on the same subnet as the
+   interface that is being tested:
+
+     ping  <IP_address>
+
+
+TROUBLESHOOTING: Some systems have trouble supporting MSI and/or MSI-X 
+interrupts. If you believe your system needs to disable this style of 
+interrupt, the driver can be built and installed with the command:
+
+     make CFLAGS_EXTRA=-DDISABLE_PCI_MSI install
+
+Normally the driver will generate an interrupt every two seconds, so if 
+you can see that you're no longer getting interrupts in cat /proc/interrupts
+for the ethX igb device, then this workaround may be necessary.
+
+
+To build igb driver with DCA:
+------------------------------
+ 
+This example assumes the ioatdma and igb sources are in /usr/src
+ 
+1. # unpack the ioatdma source, build and install
+
+     cd /usr/src
+     tar zxf ioatdma-<ioat version>.tar.gz
+     cd ioatdma-<ioat version>
+     make
+     make install
+ 
+2. # unpack with igb driver, build with DCA support and install
+     
+     cd /usr/src
+     tar zxf igb-<igb version>.tar.gz
+     cd igb-<igb-version>/src
+     make CFLAGS_EXTRA="-DIGB_DCA -I/usr/src/ioatdma-<ioat version>/include"
+     make install
+
+
+Command Line Parameters
+=======================
+
+If the driver is built as a module, the  following optional parameters
+are used by entering them on the command line with the modprobe command
+using this syntax:
+
+     modprobe igb [<option>=<VAL1>,<VAL2>,...]
+
+For example:
+
+     modprobe igb InterruptThrottleRate=16000,16000
+
+
+The default value for each parameter is generally the recommended setting,
+unless otherwise noted.
+
+NOTES:  For more information about the InterruptThrottleRate,
+        parameter, see the application note at:
+        http://www.intel.com/design/network/applnots/ap450.htm
+
+        A descriptor describes a data buffer and attributes related to
+        the data buffer.  This information is accessed by the hardware.
+
+
+InterruptThrottleRate
+---------------------
+Valid Range:   0,1,3,100-100000 (0=off, 1=dynamic, 3=dynamic conservative)
+Default Value: 3
+
+The driver can limit the amount of interrupts per second that the adapter
+will generate for incoming packets. It does this by writing a value to the 
+adapter that is based on the maximum amount of interrupts that the adapter 
+will generate per second.
+
+Setting InterruptThrottleRate to a value greater or equal to 100
+will program the adapter to send out a maximum of that many interrupts
+per second, even if more packets have come in. This reduces interrupt
+load on the system and can lower CPU utilization under heavy load,
+but will increase latency as packets are not processed as quickly.
+
+The default behaviour of the driver previously assumed a static 
+InterruptThrottleRate value of 8000, providing a good fallback value for 
+all traffic types,but lacking in small packet performance and latency. 
+The hardware can handle many more small packets per second however, and 
+for this reason an adaptive interrupt moderation algorithm was implemented.
+
+The driver has two adaptive modes (setting 1 or 3) in which it dynamically
+adjusts the InterruptThrottleRate value based on the traffic that it receives.
+After determining the type of incoming traffic in the last timeframe, it will
+adjust the InterruptThrottleRate to an appropriate value for that traffic.
+
+The algorithm classifies the incoming traffic every interval into
+classes.  Once the class is determined, the InterruptThrottleRate value is 
+adjusted to suit that traffic type the best. There are three classes defined: 
+"Bulk traffic", for large amounts of packets of normal size; "Low latency",
+for small amounts of traffic and/or a significant percentage of small
+packets; and "Lowest latency", for almost completely small packets or 
+minimal traffic.
+
+In dynamic conservative mode, the InterruptThrottleRate value is set to 4000 
+for traffic that falls in class "Bulk traffic". If traffic falls in the "Low 
+latency" or "Lowest latency" class, the InterruptThrottleRate is increased 
+stepwise to 20000. This default mode is suitable for most applications.
+
+For situations where low latency is vital such as cluster or
+grid computing, the algorithm can reduce latency even more when
+InterruptThrottleRate is set to mode 1. In this mode, which operates
+the same as mode 3, the InterruptThrottleRate will be increased stepwise to 
+70000 for traffic in class "Lowest latency".
+
+Setting InterruptThrottleRate to 0 turns off any interrupt moderation
+and may improve small packet latency, but is generally not suitable
+for bulk throughput traffic.
+
+NOTE:  Dynamic interrupt throttling is only applicable to adapters
+       operating in MSI or Legacy interrupt mode, using a single
+       receive queue.
+
+NOTE:  When igb is loaded with default settings and multiple adapters
+       are in use simultaneously, the CPU utilization may increase non-
+       linearly.  In order to limit the CPU utilization without impacting
+       the overall throughput, we recommend that you load the driver as
+       follows:
+
+           modprobe igb InterruptThrottleRate=3000,3000,3000
+
+       This sets the InterruptThrottleRate to 3000 interrupts/sec for
+       the first, second, and third instances of the driver.  The range
+       of 2000 to 3000 interrupts per second works on a majority of
+       systems and is a good starting point, but the optimal value will
+       be platform-specific.  If CPU utilization is not a concern, use
+       default driver settings.
+
+
+LLI (Low Latency Interrupts)
+---------------------------- 
+LLI allows for immediate generation of an interrupt upon processing receive 
+packets that match certain criteria as set by the parameters described below. 
+LLI parameters are not enabled when Legacy interrupts are used. You must be 
+using MSI or MSI-X (see cat /proc/interrupts) to successfully use LLI.
+
+
+LLIPort
+-------
+Valid Range:   0-65535
+Default Value: 0 (disabled)
+
+LLI is configured with the LLIPort command-line parameter, which specifies 
+which TCP port should generate Low Latency Interrupts.
+
+For example, using LLIPort=80 would cause the board to generate an 
+immediate interrupt upon receipt of any packet sent to TCP port 80 on the 
+local machine.
+
+WARNING: Enabling LLI can result in an excessive number of interrupts/second 
+that may cause problems with the system and in some cases may cause a kernel 
+panic. 
+
+
+LLIPush
+-------
+Valid Range:   0-1
+Default Value: 0 (disabled)
+
+Can be set to be enabled or disabled (default). It is most 
+effective in an environment with many small transactions.
+NOTE: Enabling LLIPush may allow a denial of service attack.
+
+
+LLISize
+-------
+Valid Range:   0-1500
+Default Value: 0 (disabled)
+
+Causes an immediate interrupt if the board receives a packet smaller 
+than the specified size.
+
+
+IntMode
+-------
+Valid Range:    0-3
+Default Value:  2
+0 - Legacy Interrupts, single queue
+1 - MSI interrupts, single queue
+2 - MSI-X interrupts, single queue (default)
+3 - MSI-X interrupts, multiple queues
+
+Allows changing interrupt mode and MQ status at load time, without requiring
+a recompile. If the driver fails to enable a specific interrupt mode, it will
+fail back to lesser capabilities.
+
+
+LROAggr
+-------
+Valid Range:    2-44
+Default Value:  32
+
+Defines the maximum number of packets that can be aggregated together. 
+
+
+Additional Configurations
+=========================
+
+
+  Configuring the Driver on Different Distributions
+  -------------------------------------------------
+  Configuring a network driver to load properly when the system is started
+  is distribution dependent.  Typically, the configuration process involves
+  adding an alias line to /etc/modules.conf or /etc/modprobe.conf as well
+  as editing other system startup scripts and/or configuration files.  Many
+  popular Linux distributions ship with tools to make these changes for you.
+  To learn the proper way to configure a network device for your system,
+  refer to your distribution documentation.  If during this process you are
+  asked for the driver or module name, the name for the Linux Base Driver
+  for the Gigabit Family of Adapters is igb.
+
+  As an example, if you install the igb driver for two Gigabit adapters 
+  (eth0 and eth1) and want to set the interrupt mode to MSI-X and MSI 
+  respectively, add the following to modules.conf or /etc/modprobe.conf:
+
+       alias eth0 igb
+       alias eth1 igb
+       options igb IntMode=2,1
+
+
+  Viewing Link Messages
+  ---------------------
+  Link messages will not be displayed to the console if the distribution is
+  restricting system messages.  In order to see network driver link messages
+  on your console, set dmesg to eight by entering the following:
+
+       dmesg -n 8
+
+  NOTE: This setting is not saved across reboots.
+
+
+  Jumbo Frames
+  ------------
+  Jumbo Frames support is enabled by changing the MTU to a value larger than
+  the default of 1500.  Use the ifconfig command to increase the MTU size.
+  For example:
+
+       ifconfig eth<x> mtu 9000 up
+
+  This setting is not saved across reboots.  It can be made permanent if
+  you add:
+
+       MTU=9000
+
+   to the file /etc/sysconfig/network-scripts/ifcfg-eth<x>.  This example
+   applies to the Red Hat distributions; other distributions may store this
+   setting in a different location.
+
+  Notes:
+
+  - To enable Jumbo Frames, increase the MTU size on the interface beyond
+    1500.
+
+  - The maximum MTU setting for Jumbo Frames is 9216.  This value coincides
+    with the maximum Jumbo Frames size of 9234 bytes.
+
+  - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or
+    loss of link.
+
+
+  Ethtool
+  -------
+  The driver utilizes the ethtool interface for driver configuration and
+  diagnostics, as well as displaying statistical information.  Ethtool
+  version 3.0 or later is required for this functionality, although we 
+  strongly recommend downloading the latest version at:
+
+  http://sourceforge.net/projects/gkernel.
+  
+
+  Enabling Wake on LAN* (WoL)
+  ---------------------------
+  WoL is configured through the Ethtool* utility.  Ethtool is included with
+  all versions of Red Hat after Red Hat 7.2.  For other Linux distributions,
+  download and install Ethtool from the following website:
+  http://sourceforge.net/projects/gkernel.
+
+  For instructions on enabling WoL with Ethtool, refer to the website listed
+  above.
+
+  WoL will be enabled on the system during the next shut down or reboot.
+  For this driver version, in order to enable WoL, the igb driver must be
+  loaded when shutting down or rebooting the system.
+
+  Wake On LAN is only supported on port A of multi-port adapters.
+
+  Wake On LAN is not supported for the Intel(R) Gigabit VT Quad Port Server 
+  Adapter.
+
+
+  Multiqueue
+  ----------
+  In this mode, a separate MSI-X vector is allocated for each queue and one
+  for "other" interrupts such as link status change and errors.  All 
+  interrupts are throttled via interrupt moderation.  Interrupt moderation 
+  must be used to avoid interrupt storms while the driver is processing one 
+  interrupt.  The moderation value should be at least as large as the expected
+  time for the driver to process an interrupt. Multiqueue is off by default.
+
+  REQUIREMENTS: MSI-X support is required for Multiqueue. If MSI-X is not 
+  found, the system will fallback to MSI or to Legacy interrupts.
+  This driver supports multiqueue in kernel versions 2.6.24 and 
+  greater.
+  This driver supports receive multiqueue on all kernels that support MSI-X.
+  NOTE: Do not use MSI-X with the 2.6.19 or 2.6.20 kernels.
+
+  To enable a separate vector for TX, use: 
+  # make CFLAGS_EXTRA=-DCONFIG_IGB_SEPARATE_TX_HANDLER
+  This will allocate a separate handler for tx cleanups. This might be useful 
+  if you have a lot of CPU cores under heavy load and want to spread the 
+  processing load around.  
+ 
+  With this option, you would get three MSI-X vectors: one for TX, one for RX, 
+  and one for link.
+
+
+  LRO
+  ---
+  Large Receive Offload (LRO) is a technique for increasing inbound throughput
+  of high-bandwidth network connections by reducing CPU overhead. It works by
+  aggregating multiple incoming packets from a single stream into a larger 
+  buffer before they are passed higher up the networking stack, thus reducing
+  the number of packets that have to be processed. LRO combines multiple 
+  Ethernet frames into a single receive in the stack, thereby potentially 
+  decreasing CPU utilization for receives.
+
+  NOTE: LRO requires 2.6.24 or later kernel version. You also need to have
+  inet_lro enabled via either the CONFIG_INET_LRO or CONFIG_INET_LRO_MODULE 
+  kernel config option. Additionally, if CONFIG_INET_LRO_MODULE is used, the
+  inet_lro module needs to be loaded before the igb driver.
+
+  IGB_LRO is a compile time flag. The user can enable it at compile 
+  time to add support for LRO from the driver. The flag is used by adding 
+  CFLAGS_EXTRA="-DIGB_LRO" to the make file when it's being compiled. 
+
+     make CFLAGS_EXTRA="-DIGB_LRO" install
+
+  You can verify that the driver is using LRO by looking at these counters in 
+  Ethtool:
+
+  lro_aggregated - count of total packets that were combined
+  lro_flushed - counts the number of packets flushed out of LRO
+  lro_no_desc - counts the number of times an LRO descriptor was not available 
+  for the LRO packet
+
+  NOTE: IPv6 and UDP are not supported by LRO.
+  
+Known Issues/Troubleshooting
+============================
+
+  NOTE: After installing the driver, if your Intel Network Connection is not 
+  working, verify in the "In This Release" section of the readme that you have 
+  installed the correct driver.
+
+  Using the igb driver on 2.4 or older 2.6 based kernels
+  ------------------------------------------------------
+  Due to limited support for PCI-Express in 2.4 kernels and older 2.6 kernels,
+  the igb driver may run into interrupt related problems on some systems, 
+  such as no link or hang when bringing up the device.
+
+  We recommend the newer 2.6 based kernels, as these kernels correctly
+  configure the PCI-Express configuration space of the adapter and all
+  intervening bridges. If you are required to use a 2.4 kernel, use a 2.4 kernel 
+  newer than 2.4.30. For 2.6 kernels we recommend using the 2.6.21 kernel or 
+  newer.
+
+  Alternatively, on 2.6 kernels you may disable MSI support in the kernel by 
+  booting with the "pci=nomsi" option or permanently disable MSI support in 
+  your kernel by configuring your kernel with CONFIG_PCI_MSI unset.
+
+  Intel(R) Active Management Technology 2.0, 2.1, 2.5 not supported in 
+  conjunction with Linux driver
+  ---------------------------------------------------------------------
+
+  Driver Compilation
+  ------------------
+  When trying to compile the driver by running make install, the following
+  error may occur:
+
+    "Linux kernel source not configured - missing version.h"
+
+  To solve this issue, create the version.h file by going to the Linux source
+  tree and entering:
+
+    make include/linux/version.h.
+
+  Performance Degradation with Jumbo Frames
+  -----------------------------------------
+  Degradation in throughput performance may be observed in some Jumbo frames 
+  environments. If this is observed, increasing the application's socket buffer
+  size and/or increasing the /proc/sys/net/ipv4/tcp_*mem entry values may help.
+  See the specific application manual and 
+  /usr/src/linux*/Documentation/networking/ip-sysctl.txt for more details.
+
+  Jumbo Frames on Foundry BigIron 8000 switch
+  -------------------------------------------
+  There is a known issue using Jumbo frames when connected to a Foundry
+  BigIron 8000 switch.  This is a 3rd party limitation.  If you experience
+  loss of packets, lower the MTU size.
+
+  Multiple Interfaces on Same Ethernet Broadcast Network
+  ------------------------------------------------------
+  Due to the default ARP behavior on Linux, it is not possible to have
+  one system on two IP networks in the same Ethernet broadcast domain
+  (non-partitioned switch) behave as expected.  All Ethernet interfaces
+  will respond to IP traffic for any IP address assigned to the system.
+  This results in unbalanced receive traffic.
+
+  If you have multiple interfaces in a server, either turn on ARP
+  filtering by entering:
+
+    echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
+  (this only works if your kernel's version is higher than 2.4.5),
+
+  NOTE: This setting is not saved across reboots.  The configuration
+  change can be made permanent by adding the line:
+    net.ipv4.conf.all.arp_filter = 1
+  to the file /etc/sysctl.conf
+
+      or,
+
+  install the interfaces in separate broadcast domains (either in
+  different switches or in a switch partitioned to VLANs).
+
+  Disable rx flow control with ethtool
+  ------------------------------------
+  In order to disable receive flow control using ethtool, you must turn
+  off auto-negotiation on the same command line.
+
+  For example:
+
+   ethtool -A eth? autoneg off rx off
+
+  Unplugging network cable while ethtool -p is running
+  ----------------------------------------------------
+  In kernel versions 2.5.50 and later (including 2.6 kernel), unplugging 
+  the network cable while ethtool -p is running will cause the system to 
+  become unresponsive to keyboard commands, except for control-alt-delete.  
+  Restarting the system appears to be the only remedy.
+
+  Trouble passing traffic with on ports 1 and 2 using RHEL3
+  ---------------------------------------------------------
+  There is a known hardware compatibility issue on some systems with RHEL3 
+  kernels. Traffic on ports 1 and 2 may be slower than expected and ping times
+  higher than expected. 
+
+  This issue MAY be resolved by updating to the latest kernel and BIOS. You can 
+  check your system's BIOS by downloading the Linux Firmware Developer Kit that 
+  can be obtained at http://www.linuxfirmwarekit.org/
+
+  Do Not Use LRO When Routing Packets
+  -----------------------------------
+  Due to a known general compatibility issue with LRO and routing, do not use
+  LRO when routing packets.
+
+  Build error with Asianux 3.0 - redefinition of typedef 'irq_handler_t'
+  ---------------------------------------------------------------------
+  Some systems may experience build issues due to redefinition of irq_handler_t.  
+  To resolve this issue build the driver (step 4 above) using the command:
+
+    make CFLAGS_EXTRA=-DAX_RELEASE_CODE=1 install
+
+  MSI-X Issues with Kernels between 2.6.19 - 2.6.21 (inclusive)
+  -------------------------------------------------------------
+  Kernel panics and instability may be observed on any MSI-X hardware if you 
+  use irqbalance with kernels between 2.6.19 and 2.6.21. If such problems are 
+  encountered, you may disable the irqbalance daemon or upgrade to a newer 
+  kernel.
+
+  Rx Page Allocation Errors
+  -------------------------
+  Page allocation failure. order:0 errors may occur under stress with kernels 
+  2.6.25 and above. This is caused by the way the Linux kernel reports this 
+  stressed condition.
+ 
+
+Support
+=======
+
+For general information, go to the Intel support website at:
+
+    http://support.intel.com
+
+or the Intel Wired Networking project hosted by Sourceforge at:
+
+    http://sourceforge.net/projects/e1000
+
+If an issue is identified with the released source code on the supported
+kernel with a supported adapter, email the specific information related
+to the issue to igb-devel at lists.sf.net
+
+
+
+License
+=======
+
+Intel Gigabit Linux driver.
+Copyright(c) 1999 - 2008 Intel Corporation.
+
+This program is free software; you can redistribute it and/or modify it
+under the terms and conditions of the GNU General Public License,
+version 2, as published by the Free Software Foundation.
+
+This program is distributed in the hope 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.,
+51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+
+The full GNU General Public License is included in this distribution in
+the file called "COPYING".
+
+
+
+Trademarks
+==========
+
+Intel, Itanium, and Pentium are trademarks or registered trademarks of
+Intel Corporation or its subsidiaries in the United States and other
+countries.
+
+* Other names and brands may be claimed as the property of others.




More information about the kernel-team mailing list