This is an old revision of the document!


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

===== Week 9 [ Mon 19 Jul 2010 - Sun 25 Jul 2010 ] ===== ==== Day 1 [ Mon 19 Jul 2010 ] ==== I started learning about multiboot and Xen. More info on this in following days. ==== Day 2 [ Tue 20 Jul 2010 ] ==== I took a step back today and worked on the forcedeth driver again. Stefan suggested that we drop the newer descriptor formats in favor of the old ones, to reduce code size and clean up the code. There were a lot of areas in the code that would take the form of an if/else construct dependent on the descriptor version. The main problem is that we don't know for sure whether all NICs support the legacy descriptor format. Since the old driver only used the legacy descriptor format we have the guarantee (in case nothing else is wrong) that the new driver will work with those NICs as well. Breaking stuff that previously worked is not an option. Unfortunately, the Linux driver also uses the desc_ver field (which indicates what descriptor version is used for the NIC) in several other places: * NV_TX[2]_LASTPACKET. This flag is supposedly set to indicate to the NIC that this is the last packet in a series of fragments. Since we don't offload packet fragmentation, my guess is that this flag is ignored by the NIC. Using both the *TX* and *TX2* versions of the flag work on my NIC. Also, since the flaglen field has a different format in both descriptor versions, it makes sense that *TX* would be used in the legacy format and *TX2* would be used in the newer format. * Backoff implementation. Based on the descriptor version, the Linux driver employs a different backoff implementation. I found the Linux patch that added this implementation and noticed that it didn't add any new PCI_ROMs. I concluded that the driver had to work on previous NICs without this new implementation, so I left it out. Stefan made the following comparisons between the resulting driver (the one that only used the legacy descriptor format) and the previous one: ^ text ^ data ^ bss ^ dec ^ hex ^ filename ^ | 6995 | 516 | 0 | 7511| 1d57| bin/forcedeth.o ( legacy-only) | | 9140 | 516 | 0 | 9656| 25b8| bin/forcedeth.o ( linux-like) | There is an uncompressed difference of ~2KB between the two, so the legacy-only version might actually be the one that makes it into the mainline branch. I've never faced such a problem before, and it is quite interesting. Do you use a version that you know will work with all the NICs but is slightly bloated or do you go for the minimal driver that _might not_ work with every NIC. I would go for the minimal driver and wait until someone reports a problem. If the bug isn't obvious, I would do the following: * Try the driver supporting all descriptor formats. * If it works then the problem is (in the order of probability): * The NIC only handles the newer descriptor format, therefore bring all the code back * The NIC really needs the NV_TX2_LASTPACKET flag set * The NIC needs the newer backoff algorithm * If that one doesn't work, stop! Debugging time!


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:week9 (generated for current page)