====== Michael Decker: Driver Development ====== ==== Week B ==== ---- === 06 August === More work on 3c59x done the past two days. I haven't thrown in through the compiler yet, but that's next. I still need to rework the timers. * [[http://git.etherboot.org/?p=people/mdeck/gpxe.git;a=commit;h=80e01b840fb3888c046361788f048355bc98c6fa|[Drivers-3c59x] More linux -> gPXE changes]] * [[http://git.etherboot.org/?p=people/mdeck/gpxe.git;a=commit;h=e51923fce0ce59120889317fe4134f673fba2b16|[Drivers-3c59x] printk -> DBG]] * [[http://git.etherboot.org/?p=people/mdeck/gpxe.git;a=commit;h=d557d94d4e3e3b49330e6f013831a996ab5904c5|[Drivers-3c59x] Removed stats code]] * [[http://git.etherboot.org/?p=people/mdeck/gpxe.git;a=commit;h=26e4b5dfe2f23da099113d4f45faab9022de6e5d|[Drivers-3c59x] Removed ethtool support]] * [[http://git.etherboot.org/?p=people/mdeck/gpxe.git;a=commit;h=3605cbd396bc173a9639899788130617b85bf6a5|[Drivers-3c59x] MAC address handling, compaq_net_device support]] * [[http://git.etherboot.org/?p=people/mdeck/gpxe.git;a=commit;h=418a4b9067d518e06702f13baa12e99a58dbce7f|[Drivers-3c59x] Removed #ifdefs]] === 09 August === Additional changes to 3c59x. It now successfully compiles. I have not yet tested it, and I anticipate additional changes in doing so. * [[http://git.etherboot.org/?p=people/mdeck/gpxe.git;a=commit;h=a0f736c4f2c5e417a83adace3126fbede0f62dd3|[Drivers-3c59x] Removed EISA support]] EISA support code was removed as per mcb30's recommendation during our Friday meeting. This will reduce the image size and simplify conversion. * [[http://git.etherboot.org/?p=people/mdeck/gpxe.git;a=commit;h=f495d70763d49bd311be75d4cbd9ddf3e446b3de|[Drivers-3c59x] Removed linux timer code]] Timer-dependent code was replaced with code occasionally triggered during a poll() call. * [[http://git.etherboot.org/?p=people/mdeck/gpxe.git;a=commit;h=216284aa47374397ebbc059b5c5e322df7fbc31c|[Drivers-3c59x] Removed work-limiting variables]] Interrupt functions, set to call during poll()s, had checks to limit the amount of work performed during a single call. I pulled out the code for now, as I consider it unnecessary. * [[http://git.etherboot.org/?p=people/mdeck/gpxe.git;a=commit;h=e68d86b229c78aa270de3480e93a011b2e189159|[Drivers-3c59x] Compiles. Added mii.c, modified pcnet32 & sundance]] Select MII structures, code, and definitions were pulled into the tree. The pcnet32 and sundance drivers had their own local mii_if_info definitions causing collisions, so these were commented out. Significant amounts of additional small changes were made to adjust the code to gPXE, including datatypes, prototypes, gPXE structs and calls, casts, trimming out unnecessary debug prefixes, removing IRQ-related code, etc. Many changes due to migrating ''if_port'' from the net_device to the private struct, and fixing debug print characters because of changes in data types. Next on my agenda is to test the code and perform debugging. I also will go through the debug statements and adjust their statement levels as necessary. === 10 August === After testing, I found the ''ioaddr'' PCI acquisition code needed adjustment. I also removed a stats interrupt disable notification, since stats will always fill up with the driver not clearing them. * [[http://git.etherboot.org/?p=people/mdeck/gpxe.git;a=commit;h=6aea3d39cf5e9cbac9dabcff64c790ba52942bd8|[Drivers-3c59x] Fixed ioaddr acquisition code, removed stats notification]] I ran ''scandisk'' a few times in DOS via AoE without any noticable network errors. The surface scan progress did appear ever-so-slightly jittery, so I wonder how things will turn out under more careful testing conditions. Until more thorough testing is performed, I will leave the original driver code commented out, and will refrain from cleaning up the code. This should enhance the debuggability (I don't think that's a word) and simplify touching up the driver. I currently don't see any problems with the driver.