Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
soc:2010:andreif:journal:week1 [2010/05/28 12:56]
andreif
soc:2010:andreif:journal:week1 [2010/06/13 14:48] (current)
mdc
Line 1: Line 1:
-===== Week 1 =====+===== Week 1 [ Mon 24 May - Sun 30 May 2010 ]=====
  
-==== Day 1 ====+==== Mon 24 May 2010 ====
  
 Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=0e64b6cd060808571a97d2ed26361952ac9c513d|0e64b6cd060808571a97d2ed26361952ac9c513d]] Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=0e64b6cd060808571a97d2ed26361952ac9c513d|0e64b6cd060808571a97d2ed26361952ac9c513d]]
Line 15: Line 15:
 VMware now greets me with a ''​No more network devices''​ message since my ''​.probe''​ routine does nothing. VMware now greets me with a ''​No more network devices''​ message since my ''​.probe''​ routine does nothing.
  
-==== Day 2 ====+==== Tue 25 May 2010 ====
  
 Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=7bb4f10c31b18f3ed78537c83dbd9d4db10033bb|7bb4f10c31b18f3ed78537c83dbd9d4db10033bb]] Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=7bb4f10c31b18f3ed78537c83dbd9d4db10033bb|7bb4f10c31b18f3ed78537c83dbd9d4db10033bb]]
Line 48: Line 48:
 Finally, linke the pci_device to the net_device by setting pci_device'​s ''​priv''​ field to point to the net_device (''​pci_set_drvdata''​). Also you might want to make sure both structure point to the same physical device (the ''​dev''​ field). Finally, linke the pci_device to the net_device by setting pci_device'​s ''​priv''​ field to point to the net_device (''​pci_set_drvdata''​). Also you might want to make sure both structure point to the same physical device (the ''​dev''​ field).
  
-==== Day 3 ====+==== Wed 26 May 2010 ====
  
 Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=4c3a07b19fa0c70847df48141cba49e1e37662f8|4c3a07b19fa0c70847df48141cba49e1e37662f8]] Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=4c3a07b19fa0c70847df48141cba49e1e37662f8|4c3a07b19fa0c70847df48141cba49e1e37662f8]]
Line 62: Line 62:
   * ASEL - //Auto Select// - automatically select the operating media interface port   * ASEL - //Auto Select// - automatically select the operating media interface port
  
-==== Day 4 ====+==== Thu 27 May 2010 ====
 Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=eb08022a85cf8c63fe9de240cb2d00679d942006|eb08022a85cf8c63fe9de240cb2d00679d942006]] Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=eb08022a85cf8c63fe9de240cb2d00679d942006|eb08022a85cf8c63fe9de240cb2d00679d942006]]
  
Line 81: Line 81:
 At stefanha'​s suggestion i started refactoring the .probe routine a bit, since it was quickly becoming >4 screens long. Even though I've moved around some large code blocks, the routine still has 3 screens because of everything else that I've added. It needs more cowbell. At stefanha'​s suggestion i started refactoring the .probe routine a bit, since it was quickly becoming >4 screens long. Even though I've moved around some large code blocks, the routine still has 3 screens because of everything else that I've added. It needs more cowbell.
  
-==== Day 5 ====+==== Fri 28 May 2010 ====
 Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=f77ad7eee94a3d161a2ddf0c94a8906a75169d24|f77ad7eee94a3d161a2ddf0c94a8906a75169d24]] Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=f77ad7eee94a3d161a2ddf0c94a8906a75169d24|f77ad7eee94a3d161a2ddf0c94a8906a75169d24]]
  
Line 87: Line 87:
  
 Did a test to see if .probe runs all the way through and this gave me an oportunity to fix some bugs, mostly related to the fact that I performed certain initializations after they were required. Gpxe now tells me that the .open routine is unsupported,​ so I guess I'll tackle that next. Did a test to see if .probe runs all the way through and this gave me an oportunity to fix some bugs, mostly related to the fact that I performed certain initializations after they were required. Gpxe now tells me that the .open routine is unsupported,​ so I guess I'll tackle that next.
 +
 +==== Sat 29 May 2010 ====
 +Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=ad2ec93a52650947ce04e55f765456b6e22dcb36|ad2ec93a52650947ce04e55f765456b6e22dcb36]]
 +
 +Today I ran into the first piece of code that I just couldn'​t understand. Starting the .open implementation,​ I had to set up the options field. This field describes some of the NICs capabilities,​ such as: duplex mode, auto negotiation,​ 10/​100Base-T,​ etc. This is all good but the way these options are selected in both the Linux driver and the old driver don't make any sense to me. I spent several hours browsing the source code and the Internet trying to find some answers but this didn't yield any results. After a while I went on with the .open implementation,​ I understand what it does, but the way the options are set is all wrong so nothing I've written so far works how its supposed to.
 +
 +For example, my current chip is an AM79C970A which can do full-duplex. Because of the options, the old driver'​s code ends up taking a path leading to the access of BCR32 which the chip doesn'​t have. I'm not sure if the NIC silently fails when you try to access an inexistent register or something really evil happens :)
 +
 +If I don't figure this out by tomorrow, I'll set the options as they should be for my current chip and after the driver works, I'll go through each other chips' datasheet and figure out the rest.
 +
 +Some other stuff to note:
 +  * AUI - //​Attachment Unit Interface//
 +  * GPSI - //General Purpose Serial Interface//
 +
 +==== Sun 30 May 2010 ====
 +
 +Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=598996546cb8a9838dfb982331bc5af7c328a00e|598996546cb8a9838dfb982331bc5af7c328a00e]]
 +
 +Today went pretty well, the .open implementation is almost done, plus I've tackled the .remove and .close since they'​re easy both in concept and in implementation.
 +
 +There'​s a small problem in that the AM79C970 chips don't have autonegotiation possibilities which both the old driver and the Linux driver assume. I deduced this only from looking at the Linux code and running the old driver. Stefanha suggested that I do a test run with the Linux code to see if it takes that path. It's on my list for tomorrow, along with a bit of code-cleanup and some code tree walking :). After that, tx and rx await.
 +
 +No major problems until now, I guess I'll have to wait until the driver is all done to see if everything fits together or not :)
 +
 +This concludes the first week, it's been a lot of fun so far.

QR Code
QR Code soc:2010:andreif:journal:week1 (generated for current page)