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:week2 [2010/06/03 11:12]
andreif
soc:2010:andreif:journal:week2 [2010/06/13 14:52]
mdc Add days of week
Line 1: Line 1:
-===== Week 2 [ 31 May - 6 Jun 2010 ] =====+===== Week 2 [ Mon 31 May - Sun 6 Jun 2010 ] =====
  
-==== Day 1 [ 31 May 2010 ] ====+==== Day 1 [ Mon 31 May 2010 ] ====
  
 Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=318ca039b7381e67e04f92447d9b2a211fe9541a|318ca039b7381e67e04f92447d9b2a211fe9541a]] Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=318ca039b7381e67e04f92447d9b2a211fe9541a|318ca039b7381e67e04f92447d9b2a211fe9541a]]
Line 9: Line 9:
 Other than that, I'm all set up for tackling the transmit and receive parts, which I'll start tomorrow. Other than that, I'm all set up for tackling the transmit and receive parts, which I'll start tomorrow.
  
-==== Day 2 [ 1 Jun 2010 ] ====+==== Day 2 [ Tue 1 Jun 2010 ] ====
  
 Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=04d57225b1c06fa6c37f7565ed9b2977580a29e0|04d57225b1c06fa6c37f7565ed9b2977580a29e0]] Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=04d57225b1c06fa6c37f7565ed9b2977580a29e0|04d57225b1c06fa6c37f7565ed9b2977580a29e0]]
Line 26: Line 26:
 In the next few days I'll spend some time cleaning up the code and rearranging stuff. In the next few days I'll spend some time cleaning up the code and rearranging stuff.
  
-==== Day [ 2 Jun 2010 ] ====+==== Day Wed 2 Jun 2010 ] ====
  
 me.rest() me.rest()
  
-==== Day [ 3 Jun 2010 ] ====+==== Day Thu 3 Jun 2010 ] ==== 
 + 
 +Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=5dbf33bdc89da087fe86f4a20973b648c6372837|5dbf33bdc89da087fe86f4a20973b648c6372837]]
  
 Back to work! Reorganized some bits of the code, some comments, etc. I have some doubts regarding the way the code handles full-duplex negotiation and multiple PHYs and most likely my driver does not handle these issues correctly ATM. I'll post the driver up for some reviews, Back to work! Reorganized some bits of the code, some comments, etc. I have some doubts regarding the way the code handles full-duplex negotiation and multiple PHYs and most likely my driver does not handle these issues correctly ATM. I'll post the driver up for some reviews,
 see what people think. see what people think.
 +
 +Tomorrow I'll try and setup QEmu and VirtualBox environments,​ to test the driver there too.
 +
 +==== Day 5 [ Fri 4 Jun 2010 ] ====
 +
 +Git commit: These are not the commits you are looking for :waves hand:
 +
 +Today didn't yield much in terms of code but I did manage to do some testing. First I set up QEmu and ran this small test:
 +<​code>​
 +qemu -net nic,​model=pcnet -net user -bootp http://​vmsplice.net/​tinycore.gpxe -option-rom bin/​pcnet32.rom
 +</​code>​
 +It worked, no problems there.
 +
 +After that, I started setting up VirtualBox. I ran into some problems because of the already inserted kvm module, which I had to remove, after which VirtualBox worked. Since I didn't have a -bootp option like QEmu and I wanted to play with the gPXE command line, I used that one to do the exact test that I did in qemu. <​code>​
 +ifopen net0
 +dhcp net0
 +imgfetch http://​vmsplice.net/​tinycore.gpxe
 +imgload tinycore.gpxe
 +imgrun tinycore.gpxe
 +</​code>​
 +This worked on both of the pcnet NICs that VirtualBox emulates.
 +
 +I started coding after that, when I realized that I forgot about the patches regarding the MAC address checking routines (is_valid_ether_addr & friends). Did two small patches and emailed them. If those get accepted I can easily finish the address checking in my pcnet32 driver.
 +
 +Unfortunately,​ I didn't get to go through the feedback on the driver or start working on the link state code. Slow day :(
 +
 +==== Day 6 [ Sat 5 Jun 2010 ] ====
 +
 +Git commit: [[http://​git.etherboot.org/?​p=people/​andreif/​gpxe.git;​a=commit;​h=551178b108b99374d6918ec7fdc92b8eee8bd47e|551178b108b99374d6918ec7fdc92b8eee8bd47e]]
 +
 +I started today by looking at the link state code in the Linux driver. The problem with it is that it depends on the number of PHYs and the duplex mode of the NIC. The size of the code is comparable to that of some of my other main routines, but I find that its impact is minimal. I decided that for now I would leave link state on in .probe and implement it if someone specifically requests it.
 +
 +Testing followed. Mdc and stefanha both told me to try and download some images larger than 100MB to see what speeds the driver reaches and how it performs. The old driver got an 100MB image in 178s my driver got it 145s. Something was wrong. Thanks to mdc, meteger and stefanha the bug eventually surfaced and got fixed. I was writing some wrong values into the CSR0 register. After this, the driver got the 100MB image in 37s. The following days I'll try to improve this. I'll post some comparisons tomorrow.
 +
 +After a wonderful meeting with stefanha and mdc, I got back to fixing the stuff people told me about in the email thread. In the process, I managed to read (skipping some sections) this [[http://​www.rdrop.com/​users/​paulmck/​scalability/​paper/​whymb.2009.04.05a.pdf|paper]]. I'll go through it tomorrow too to make sure I fully understand the concepts.
 +
 +==== Day 7 [ Sun 6 Jun 2010 ] ====
 +
 +me.rest()

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