[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