Intel Ethernet i217

Revision as of 12:46, 18 April 2015 by osdev>Kemosparc (Network Driver for Intel Ethernet Cards I217 and 82577LM)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Network Driver for Intel Ethernet Cards I217 and 82577LM

I am writing this Wiki as a demonstration to my own experience of getting a working driver for the Intel I217 and 82577LM network cards to work, on a real native bare metal hardware, namely Thinkpads W540 and W510. Linux uses the e1000e network driver for those cards. I have started from a working e1000 driver that I have developed for my OS and which is operational on Qemu, Bochs, and VirtualBox. The main objective of this Wiki is to try to highlight the differences and the addition needed on an operations e1000 driver to work handle network cards that work with the e1000e. So the provided knowledge in this wiki might be applicable on other Intel interfaces. For completion, I will present in this wiki my e1000 driver with the additions that made it work on those native NICs, I217 and 82577LM. I built my original e1000 driver based on information from OSDev and some hobby operating systems on github.

Card Addresses and Data Structures

To start with, lets state some macro definitions that we are going to use in the code.