This is an old revision of the document!


A PCRE internal error occured. This might be caused by a faulty plugin

===== Week 8 [ Mon 12 Jul 2010 - Sun 18 Jul 2010 ] ===== ==== Day 1 [ Mon 12 Jul 2010 ] ==== Git commit: [[http://git.etherboot.org/?p=people/andreif/gpxe.git;a=commit;h=a8e9adfd4a8e3775c227a5f8f8138ef9d2a9d922|a8e9adfd4a8e3775c227a5f8f8138ef9d2a9d922]] I started out today by creating a new local branch and removing any non-critical code, constantly comparing what I had with the old driver. Eventually I reached a point where the new driver was very very similar to the old one, yet it still didn't work. I then remembered that Marty suggested that there might be alignment issues. And indeed there were. Using ''malloc_dma()'' and an alignment of 32 got the driver working and I finally booted a PXELINUX + DSL combo. Yay :) Tomorrow I'll post some speed comparisons between the new and the old driver and start cleaning up the code. ==== Day 2 [ Tue 13 Jul 2010 ] ==== No coding today, just some tests. I ran both the old driver and the new one and got the following results ( the test downloads an 100mb image 5 times ): ^ Old ^ New ^ | 12 | 12 | | 11 | 11 | | 11 | 12 | | 11 | 13 | | 11 | 62 | The new driver does not perform better than the old one does, on the contrary. When I'll start cleaning up the code, I'll also try and optimize to get better performance. Also, there is probably a bug in the driver since the last image was downloaded in over 60 seconds. Luckily, this behaviour is deterministic making it easier to fix. Plus, I saved the Wireshark dumps and I think they will help too. I'll spend the rest of the day refreshing my TCP knowledge, I think it'll help when looking at the packet dumps. ==== Day 3 [ Wed 14 Jul 2010 ] ==== me.rest() ==== Day 4 [ Thu 15 Jul 2010 ] ==== Git commits: - [[http://git.etherboot.org/?p=people/andreif/gpxe.git;a=commit;h=08fe740cba24f1a08bd1b236352ac1c912d78b4c|08fe740cba24f1a08bd1b236352ac1c912d78b4c]] - [[http://git.etherboot.org/?p=people/andreif/gpxe.git;a=commit;h=2efaf9346b732409fbc5c1b2b73f8379b58fe12d|2efaf9346b732409fbc5c1b2b73f8379b58fe12d]] - [[http://git.etherboot.org/?p=people/andreif/gpxe.git;a=commit;h=3b6906c87fe07f375b513540c4ea45c6a8f068c0|3b6906c87fe07f375b513540c4ea45c6a8f068c0]] - [[http://git.etherboot.org/?p=people/andreif/gpxe.git;a=commit;h=a1ab8c074f968c60de95f316a779f53b4e746fb8|a1ab8c074f968c60de95f316a779f53b4e746fb8]] Cleanup time! Initally I wanted to have a commit for each core routine but that didn't pan out since a change in one routine meant changing some .h variables which influenced other pieces of code. [1] I started out with cleaning up .probe which also meant removing a lot of unnecessary variables (related to VLANs, MSIs, etc.), plus a lot of code being removed. In the end, .probe turned out pretty good. [2] I had the most difficult time with the .open routine. It doesn't lend itself very well to organizing since most of it is just writing to all sorts of registers, and the related writes are usually only 3 or 4 which doesn't make them good candidates for a separate routine. Unwillingly I also changed a lot of the tx and rx code here. It is after this commit that the driver stopped having the bug I mentioned two days ago. It does now get the 100mb image in 12/11/11/11/11s consistently, just like the old driver. [3] .close wasn't finished, I still had to cleanup the rings and deallocate any used memory. Also, .remove wasn't complete. [4] I got .irq done, and also did a couple of other small fixes. Unfortunately, the driver does not work when chaining with undionly.kpxe for now. I have yet to debug this issue. A few more iterations and I think I'll be happy with how the driver turns out :) ==== Day 5 [ Fri 16 Jul 2010 ] ==== Git commit: [[http://git.etherboot.org/?p=people/andreif/gpxe.git;a=commit;h=10fbb07b420d9db0edb2b1f7cb4430f76aba7977|10fbb07b420d9db0edb2b1f7cb4430f76aba7977]] The goal for today was to get the driver working under UNDI. At first I was a little discoraged because the IRQ enabling/disabling was done exactly like in the Linux driver. After printing out several debug messages and trying to figure it out I noticed the following thing: when calling .open after chaining undionly.kpxe, the MII registers had different values, plus the PHY complained that there was no link found. I started analyzing the registers to see what might cause the issue. After a bit of struggling I figured out that I was powering down the PHY in .close and this was what was causing the problem. Removing the related code got the driver running under UNDI. I haven't tested it yet but I think that by waiting for the PHY to power up in .open the driver might work even when powering down the PHY in .close. Currently, the driver just sets the corresponding bit in the MII_BMCR register to power up the phy and moves on. Anyway, now the driver works under UNDI and I've also sent an RFC patch to the mailing list. I hope that sometime in the beginning of the next week, after receiving feedback, I can get a proper patch up.


Navigation

* [[:start|Home]] * [[:about|About our Project]] * [[:download|Download]] * [[:screenshots|Screenshots]] * Documentation * [[:howtos|HowTo Guides]] * [[:appnotes|Application Notes]] * [[:faq:|FAQs]] * [[:doc|General Doc]] * [[:talks|Videos, Talks, and Papers]] * [[:hardwareissues|Hardware Issues]] * [[:mailinglists|Mailing lists]] * [[http://support.etherboot.org/|Bugtracker]] * [[:contributing|Contributing]] * [[:editing_permission|Wiki Edit Permission]] * [[:wiki:syntax|Wiki Syntax]] * [[:contact|Contact]] * [[:relatedlinks|Related Links]] * [[:commerciallinks|Commercial Links]] * [[:acknowledgements|Acknowledgements]] * [[:logos|Logo Art]]

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