The Wired Ethernet Linux* team produces and maintains a number of Linux kernel device drivers for wired Intel® Ethernet controllers and as well as a couple of drivers for other system level peripherals.  The drivers are the e100, e1000, e1000e, igb, ixgb, ixgbe, igbvf, ixgbevf, ioatdma and dca.  The Wired Ethernet team maintains these drivers in the upstream Linux kernel (kernel.org kernel).

The Wired Ethernet team also releases stand-alone versions of these drivers for business reasons.  We refer to these drivers as stand-alone or out-of-tree drivers.  There are customers who take and use these drivers instead of the upstream versions.  This is mostly because they need the latest hardware on an older kernel version.      This also allows Wired Ethernet to release drivers with fixes or new hardware and feature enablement independent of the upstream kernel release schedule.   These stand alone drivers are very popular and are released as source which can then be compiled and installed into a system.  The stand-alone drivers are released via our SourceForge* site, http://e1000.sourceforge.net as well as on http://support.intel.com. 

The Wired Ethernet Linux team is considered to be co-maintainers with the Linux kernel networking maintainer.  This means that we post or acknowledge changes to any of our drivers.  The Intel Wired Ethernet Linux team is highly involved with all aspects of driver changes in the upstream kernel.org kernel for the LAD supported drivers.  The team is also involved in network architecture discussions for new features and enhanced performance.  The team is also responsible for supporting bug reports which are filed against any of our drivers.   The reports come from a lot of different sources which include but are not limited to the netdev mail list, the e1000 SourceForge project, all of the Linux Operating System vendors and any of the Original Equipment Manufacturing companies.  In the Wired Ethernet organization there are technical marketing people who help sort through some of the bug reports but the Linux team is responsible for analyzing and fixing the bugs.

The team also takes fixes and driver changes from the Linux community if and when they make sense.  We relicense some code which means we need to retain sole copyright to prevent problems.  Here is how we deal with that.  Since the code is GPL code, anyone can change the code, but not all changes are relevant nor are they always complete.  So the Wired Ethernet Linux team again analyzes these requested changes, and if they are applicable they are then applied.  If changes are required to the patches, the updated patches are supplied for comment and then for inclusion if agreed upon.  There is an exception to this which applies to the HW specific files in our drivers.  This code is common code within all of Wired Ethernet drivers, and Intel maintains the sole copyright on these code components.  If changes are requested for this code, the changes are analyzed and an Intel supplied patch is supplied which address the issue at hand.   This allows these components to be used across a wide breadth for other drivers.  The original author is always accredited with the change but Intel has to be the only author of this code to retain the sole copyright on it.

The Wired Ethernet Linux release process can be a bit complicated to understand.  The basic principle is that not only does Wired Ethernet continually submit changes upstream, but we also release the stand-alone drivers which include the changes submitted.  This works by selecting a release date based on when new HW, either a device or NIC, is going to be released.  The team then works to generate a driver that contains all of the upstream patches as well as any of the new HW enabling code that will be pushed upstream when the HW releases.  This driver is then tested on both the new HW as well as a wide range of older HW.  The team has a large number of automated tests which are run against the driver in a test bed that contains a lot of different Wired Ethernet devices and NIC’s.  This mechanism gives us a period of time to test and stabilize the driver before we release it.  In addition, the patches that are sent upstream are tested to make sure that they don’t break anything.  The team also has some automation testing for this purpose as well.

There are three things that happen when we do a formal release of our drivers.  One, patches that are in this version of the driver that are not already upstream are prepared against the latest net-next tree.  These patches are tested and compile tested against the latest net-next tree.  Once that is done the patches are pushed upstream.  Two, at this time the stand-alone driver is pushed out to the Wired Ethernet SourceForge site, http://e1000.sourceforge.net .  Three, also at this time we inform the various Operating System Vendors that the release has happened, and if any of them are waiting on the code, they will then pick up the upstream patches for their various releases.

So the bottom line is that the Linux team in Wired Ethernet is fully engaged with the Linux community in every aspect of coding, testing and release of Wired Ethernet device drivers to the upstream kernel as well as to the various companies that depend on these device drivers.

(this post was a combo effort with John R from our Linux team)