Which Network Interface is Better?
My new ASRock Z270 Taichi comes with two network interface cards that Linux identifies as:
$ lspci -nnk | grep -A2 Ethernet 00:1f.6 Ethernet controller : Intel Corporation Ethernet Connection (2) I219-V [8086:15b8] Subsystem: ASRock Incorporation Device [1849:15b8] Kernel driver in use: e1000e -- 07:00.0 Ethernet controller : Intel Corporation I211 Gigabit Network Connection [8086:1539] (rev 03) Subsystem: ASRock Incorporation Device [1849:1539] Kernel driver in use: igb
Since I only need one the question was raised: Which should I use? I’m sure the hardware performance is comparable but what driver is less drama?
A quick Google search for “igb vs e1000e” yielded no results other then a few others asking the same question with no answer.
Dig into the Hardware Datasheet
8086:15b8) is clearly the network interface MAC integrated into my Z270 PCH as it has the same PCI address as all the other PCH peripherals. The
I211 appears to be a dedicated discrete chip.
Intel ARK comparison yields nothing of interest either.
From the datasheet the
I211 seems to be much more featured (or at least is better documented and has a longer datasheet).
Details from the datasheet worth noting:
- Receive Side Scaling (RSS) support on both up to two RSS queues per TX and RX (didn’t check if each driver supports them). Interestingly, the
I210supports up to four RSS queues and may result in better performance at very high load.
- Jumbo Frames up to 9KB on
I219and up to 9.5kB on the
- Low power features on the
I219claims to consume less then 1 mW with Ethernet cable disconnected (perfect for not using it).
- Receive Side Coalescing (RSC) not available on either.
- Direct Cache Access (DCA) is available on the
- CPU Offloading features supported by the
I211include TCP segmentation and various checksums. The
I219only advertises ARP offloading support.
- Virtualization features like VMDq are not supported.
- VLANs are supported.
Dig into the Linux Kernel Driver
A quick glance over the
Kconfig of Linux 4.10 shows that the
igb driver has many more options like HWMON (if supported by hardware, doesn’t appear on my
I211) and DCA. That’s good. The E1000E driver doesn’t have any bells or whistles to flip on or off, but they could be supported.
Stability? No clue, I’ve used the
e1000e driver before on an add-in-card (
8086:10d3) and never had any issues, but that’s par for the course these days in Linux and the cheap
r8619 are practically as solid.
Conclusion: Pick the I211
I211 with the
igb driver is the clear winner. It worked out of the box on Arch Linux on kernel 4.9.6. The hardware supports a few more minor bells and whistles to improve performance while lowering CPU load and the support from the kernel driver leverage these features. The
I219 is built into the Z270 chipset and has less features but uses less power.
I211. If you need another lower bandwidth NIC, perhaps as a router, put the
I219 on the slower link like the upstream Internet connection.
Plug in the cables and call it a day, but I bet if you mix-up the cables, you’ll never notice and both will work great anyways.
Anyone have issues with either interface or driver? Leave notes in the comments below.