Table of Contents
Day 1 ( Aug 8 )
I did some cleanups in the code today. I also implemented tg3_close() and tg3_remove_one(). Those were the last two missing functions and implementing them resulted in a successful first boot of the driver :).
Day 2 ( Aug 9 )
More cleanups. Removed most of the out-commented code that was left in the driver and some other simplifications. While going through the code I also compiled a list of suspicious looking things that I want to revisit the coming days.
Day 3 ( Aug 10 )
Not much coding today, but a lot of testing. Tested the driver with all 4 test cards I have available, testing:
- Booting linux + initrd over HTTP and TFTP
- Booting linux over iSCSI
- Booting MSDOS over iSCSI, running scandisk on a 512MB iSCSI disk.
Interrupt support is not fully implemented yet, so UNDI chainloading tests were saved for later. Will see if I can get ahold of a Symantec Ghost DOS disk to stresstest the UNDI/interrupt support.
I was doing all that testing in Vienna and unfortunately forgot one test card there, so I only have 3 cards to test until the next time I get to Vienna(Probably next week).
Day 4 ( Aug 11 )
I moved kicking off autoneg to tg3_init_one() from tg3_open(). This results in the BANNER_TIMEOUT being used for auto negotiation, which should save a few seconds boot time, as autoneg can take up to 6 seconds to complete. struct tg3_napi was also removed and its fields merged into struct tg3.
Day 5 ( Aug 12 )
Moved programming of the MAC address to tg3_open() instead of tg3_init_one(), as dictated by the gPXE API specifications. Also removed was the NIC stats block, which saves some heap memory. I also removed more leftover code.
Day 7 ( Aug 14 )
A little interrupt related work. Completely untested and I still have to clear up some uncertainty on my side about tagged irq status, especially tp→last_tag.