Week -2: Implement JMicron driver
Apr. 28th to May 1st
Day 1
Start to write JMicron Driver.
- Helper functions
- jme_reload_eeprom(): Which cause the MAC processor to place MAC Address to register.
- j{read,write}32(): Register reading/writing wrapper.
- Basic layout.
- pci_probe:
- private data allocation
- Getting ioport
- Interface registration
- Initialize hardware
- Reading MAC Address
- pci_remove
- Interface un-registration
- Free private data
- Reset hardware
Day 2
- Implement link status check routines.
- ifstat can show correct cable link status.
- It'll freeze if IRQ generated on native driver.
- netdev→link_rc was initiallized in:
alloc_etherdev() → alloc_netdev() → netdev→link_rc = -EUNKNOWN_LINK_STATUS;
Day 3
- Implement receive functions
- Fount out that we have very small memory poll(128K). Due to receive buffer allocation error. The original design tried to allocate 1024*MTU received buffers.
Day 4
- Implement transmit functions
- netdev_tx_complete{_err}() called free_iob(). So we shouldn't do free_iob() both on successfully transmited or failed to deliver.