This is an old revision of the document!
July 4: Meeting with Marty: There are obviously some shortcommings in my driver design; As my driver progress has been good up to this point, I'm going to take a step back for a while and do some personal education on other drivers and driver structure; Marty asked me to profile some drivers (r8169 and 3c90x specificly) and create outlines for each driver. I'm still not directly sure on the intention behind this; I feel a little bit like the karatee kid painting a fence. July 5: I outlined r8169 -> see notes July 6: I outlined 3c90x -> see notes. While looking at 3c90x (in comparison to the outline I had done while looking through r8169), I noticed a missing memset. In theory, this shouldn't make a difference as I assume that the usage of the variables that are used are independant of the "initialization" that is done to the memory before it is used, however, all variables *should* be propperly initialized. I will speek with Marty about his opinion on this. I'm not sure if this is some sort of optimization or if it was unintentionally left out. July 7: I'm currently working on the SKGE driver outline, in the same format as r8169 and 3c90x. -> see notes. July 8: Worked on a new outline for skge, worked on a new version of probe. Power failure. Nothing to show for it :( July 9-10: Missing my pills; with out them I can't stay awake at a keyboard. July 11: Meeting with mentors. Informed that I need to make some "major progress" by monday, or be failed. July 12: Re-wrote probe section of skge.outline Moved the software reset section of skge_initialize into a new function and called it in probe instead. (skge_hardware_reset) Moved chip identification section of skge_initialize into a new function and called int in probe instead. (skge_load_chip_identifiers) in skge_initialize: - moved hardware reset and chip identification code out of this function - moved clock code into new function: (skge_stop_and_configure_clocks) - moved non-genesis specific information into new function: (generic init) outline now looks like this: <code> skge_probe alloc_etherdev netdev_init pci_set_drvdata adjust_pci_device skge_get_register_address skge_hardware_reset skge_load_chip_identifiers skge_initialize skge_genesis_init skge_generic_init skge_stop_and_configure_clocks skge_devinit skge_supported_modes netdev_link_down netdev_link_up skge_open setup_tx_resources skge_ring_alloc skge_tx_fill setup_rx_resources skge_ring_alloc refill_rx_ring populate_rx_descriptor start_clocks software_reset_device skge_irq netdev_priv skge_transmit skge_avail skge_write8 skge_poll skge_extirq skge_process_tx skge_tx_done skge_process_rx skge_rx_desc skge_rx_get netdev_rx skge_refill_rx_ring populate_rx_descriptor skge_close skge_hardware_reset skge_configure_irq skge_free_tx_resources skge_free_rx_resources skge_remove pci_get_Drvdata unregister_netdev netdev_nullify netdev_put </code> -- Chris