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:cooldavid:journal:week2 [2010/05/31 07:34]
cooldavid
soc:2010:cooldavid:journal:week2 [2010/06/04 05:47] (current)
cooldavid
Line 1: Line 1:
-=== Week 2: Discuss TCP and memory changes, update jme driver === +==== Week 2 [ 31 May - 6 Jun 2010 ]: Discuss TCP and memory changes, update jme driver ​==== 
-== TCP / memory topic == +==== jme driver ​====
-  * Current heap size is fixed at 128K. +
-  * Although it only uses 128K, all-drivers image already overlapped with heap address. +
-  * Trying to figure out a way to obtain more memory, and report it to OS. +
-  * See if it is possiable to know how much heap size we can use out of code and stack. +
- +
-== jme driver ​==+
   * From Joshua Oreman   * From Joshua Oreman
     * jme_check_link(struct net_device *netdev, int testonly)\\     * jme_check_link(struct net_device *netdev, int testonly)\\
Line 44: Line 38:
                     (unsigned long)iob->​data,​ mapping, len);                     (unsigned long)iob->​data,​ mapping, len);
 </​code>​ </​code>​
 +    * This will behave poorly when memory runs out. Better is to have a refill routine that runs after the poll(), and always attempts to refill up to a specified level. <code C>
 +    rxdesc += idx;
 +    if (jme_make_new_rx_buf(rxring->​bufinf + idx)) {
 +            DBG("​Dropped packet due to memory allocation error.\n"​);​
 +            netdev_rx_err(netdev,​ NULL, -ENOMEM);
 +    } else {
 +</​code>​
 +
 +  * From me:
 +    * The refill function did not work correctly. Because of the error packet was reused instead of making a hole. [[http://​bbs.cooldavid.org/​git/?​p=gpxe.git;​a=commitdiff;​h=aa105ed1c6d99588dceeec3ead4e434b40b59644|This patch fixed it]]
 +
 +==== Trace memory related codes ====
 +  * Current heap size is fixed at 128K.
 +  * Trying to figure out a way to obtain more memory, and report it to OS.
 +  * See if it is possiable to know how much heap size we can use out of code and stack.
 +
 +=== Schedule for memory and TCP modifications ===
 +  - Trace how the gPXE boot, relocate, and fill segment informations.
 +  - Try to understand how Michael Brown removes the even magabyte limit.
 +  - Start a discussion on the list about how to reasonably extend gPXE's usable memory.
 +  - Patch gPXE to support large(Several MB perhaps) heap memory.
 +  - Design/​discuss a TCP receive window advertisement algorithm.
 +  - Patch gPXE with ''​**TCP receive queue**'',​ ''​**SACK Support**'',​ and ''​**Window scale**''​.
 +  - Do some benchmark against different window size, and different network environment.
 +  - Post the result and discuss it on the gpxe mailling-list.
 +
 +=== Some notes after trace ===
 +  * [[soc:​2010:​cooldavid:​notes:​gpxememlayout|gPXE memory layout]]
 +  * Good articals for understanding Gate-A20
 +    - [[http://​en.wikipedia.org/​wiki/​A20_line|WIKIPEDIA - A20 line]]
 +    - [[http://​www.win.tue.nl/​~aeb/​linux/​kbd/​A20.html|A20 - a pain from the past]]
  
 +=== Expand heap ===
 +  * [[soc:​2010:​cooldavid:​notes:​expandheap|Expand gPXE heap]]

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:cooldavid:journal:week2 (generated for current page)