A few days before Christmas I started my latest project, a new driver for recent Intel onboard LAN controllers. My intention was not to replace hnak's AppleIntelE1000e.kext completely but to deliver best performance and stability on recent hardware. That's why I dropped support for a number of older NICs. Currently the driver supports:
6 and 7 Series
8 and 9 Series
Key Features of the Driver
- Support for multisegment packets relieving the network stack of unnecessary copy operations when assembling packets for transmission.
- No-copy receive and transmit. Only small packets are copied on reception because creating a copy is more efficient than allocating a new buffer.
- TCP, UDP and IPv4 checksum offload (receive and transmit).
- Support for TCP/IPv6 and UDP/IPv6 checksum offload.
- Makes use of the chip's TCP Segmentation Offload (TSO) feature with IPv4 and IPv6 in order to reduce CPU load while sending large amounts of data.
- Fully optimized for Yosemite and Mavericks (64bit architecture) but should work with Mountain Lion and Lion too, provided you build from source with the 10.8 or 10.7 SDK.
- Support for Energy Efficient Ethernet (EEE).
- VLAN support is implemented but untested as I have no need for it.
- The driver is published under GPLv2.
- The driver has been tested successfully with I217V, I218V and 82579V under 10.9.5, 10.10.1 and 10.10.2.
- Wake on LAN support is advertised by the driver but the implementation is incomplete.
- The attached archive includes source code as well as a prebuilt binary (debug version) for Mavericks and Yosemite.
- Wake on LAN still doesn't work because I haven't found time to add the missing lines of code required to make it work.
- Could you add support of for...? Well, you are probably asking me to add support for one of the older NICs like the 82571/2/3/4L or 82583 and the answer will be no as I dropped support for these chips intentionally. They are broken and I lost more than 2 weeks trying to make it work on the 82574L without success.
- Does it work with Snow Leopard or 32 bit kernels? No and I have no plans to make a version for 32 bit kernels or anything older than Lion.
- Is TSO working stable? It took some time to make TSO support work the way it should but after successfully transferring a few 100GB with this driver I have reason to believe it works.
- Goto /S/L/E and delete AppleIntelE1000e.kext.
- Recreate the kernel cache.
- Open System Preferences and delete the corresponding network interface, e. g. en0.
- Install the new driver and recreate the kernel cache.
- Open System Preferences again, select Network and check if the new network interface has been created automatically or create it manually now.
- Configure the interface.
- Make sure you have followed the installation instructions especially when you have issues with certain domains while the others are working fine.
- Use the debug version to collect log data when trying to track down problems. The kernel log messages can be retrieved with "grep kernel /var/log/system.log" in Terminal. Include the log data when asking for support or giving feedback. I'm an engineer, not a clairvoyant.
- Check your BIOS settings. You might want to disable Network Boot and the UEFI Network Stack as these can interfere with the driver.
- Double check that you have removed any AppleIntelE1000e.kext from your system because it could prevent the driver from working properly.
- Verify your bootloader configuration, in particular the kernel flags. Avoid using npci=0x2000 or npci=0x3000.
- In Terminal run netstat -s in order to display network statistics. Carefully examine the data for any unusual activity like a high number of packets with bad IP header checksums, etc.
- In case auto-configuration of the link layer connection doesn't work it might be necessary to select the medium manually in System Preferences under Network for the interface.
- Use Wireshark to create a packet dump in order to collect diagnostic information.
- Keep in mind that there are many manufacturers of network equipment. Although Ethernet is an IEEE standard, different implementations may show different behavior causing incompatibilities. In case you are having trouble try a different switch or a different cable.
- Version 1.0.0d2 (2015-01-31)
- First development release.