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 [0200]: 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 [0200]: 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

The I219 (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.

The Intel datasheets for the I211 and I219 start to give us some real perspective though.

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 I210 supports up to four RSS queues and may result in better performance at very high load.
  • Jumbo Frames up to 9KB on I219 and up to 9.5kB on the I211.
  • Low power features on the I219 claims 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 I211.
  • CPU Offloading features supported by the I211 include TCP segmentation and various checksums. The I219 only advertises ARP offloading support.
  • Virtualization features like VMDq are not supported.
  • VLANs are supported.
  • Linux PTP is supported by the I211 + igb driver for precision timestamping with IEEE 5188. Verify with ethtool -T eth0.

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 (EXPI9301CT, 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

The 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.

Use the 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.