e1000e NIC Driver change in Linux Kernel
Story
Intel PRO/1000 PCIe Network Driver in kernel source tree hasn’t been touched for quite some time, it’s been 2.3.2-k
from 3.10 all the way up to 4.1.
Not until Linux 4.2 was it bumped up to 3.2.5-k
.
I didn’t realized the change until after installing linux-image-generic-lts-wily
HWE kernel (based on 4.2) on my Linux Workstation (running Ubuntu 14.04 LTS with ksplice - up and running for 127 days…).
After rebooting, as usual I checked for new e1000e
versions and found new 3.2.7.1 VS 3.2.4.2. No waste of time, downloaded the source and built a new kernel module.
While building, I checked modinfo e1000e
and was surprised to find that the kernel built-in driver version has been bumped up to 3.2.5-k
, even newer than the previously used 3.2.4.2
. Interesting!
I had a look at the Linux 4.3 source code, finding that e1000e
driver version was again bumped up to version 3.2.6-k.
Well, still falling behind the latest e1000e stable release on SourceForge.
One interesting fact found when browsing through the source code, kernel built-in driver has a -k
suffix defined as DRV_EXTRAVERSION
. I reckon it’s just to distinguish kernel built-in driver from self-compiled kernel modules (or 3rd party driver update packages).
1 |
|
Build and load e1000e on a running system
It’s pretty straightforward: Download the source tarball, extract it, change directory to src/ and run make install, remove current loaded e1000e module, reload the newly built module, assign the interface IP(s), done. Just bear in mind that the statistics will be reset, I don’t care ;-D
1 | tar axvf e1000e-<ver>.tar.gz |
NOTE: On Ubuntu you’ll need the toolchain (
build-essential
and probably more, figure it out yourself) and kernel header for the running kernel.
BTW: e1000e 3.3.1 was released on the day after I wrote this article, damn, build again!