The aim of this project is to implement a driver for a currently unsupported NIC either by writing one from scratch or by porting an already existing open-source implementation.
Milestones and Timeline
Week 1
Figure out NIC's control / state registers.
Create driver skeleton by defining interfaces, registers.
Weeks 2 - 5
Implement functionality by writing code for the interfaces. Define subroutines as necessary.
Start with open / close / irq as these usually require setting different control registers. This is good for an early stage when data structures are set up and incomplete
Finally poll / transmit which make full use of previously defined data structures
Week 6
Refactoring / debugging. Try to create as many scenarios as possible so any of the NIC's bugs will surface.
Week 7 - 12
Depending on how things evolved up to this point, this stage either requires fixing bugs and implementing missing functionality or perhaps tackling a new driver or some other contribution to the project.