Week -1: Modify JMicron driver, RX offloading

May 2nd to May 12th

Chanloading with undionly image

Stefanha pointed out that I should try if JMicron driver can be chanloaded like: gPXE(jme driver)→gPXE(UNDI driver). Due to the UNDI interface would trigger .irq() function of net_device_operations.

First I spend a lot of time trying to figure out why chainloading with: syslinux→jme.lkrm→undionly.kpxe keeps crash(reboot) after some actions.

After a few tests, I found out that:

  • syslinux→gPXE(jme.lkrm)→undionly.kkpxe
  • Vendor PXE→gPXE(jme.pxe)→undionly.kkpxe
  • Vendor PXE→gPXE(jme.kpxe)→undionly.kkpxe

All worked fine. So I guess that it's an issue with the chainloading processes, instead of in-correct driver implement.

Implement RX checksum offloading

Testing results can be found in this note: TCP Window Size and RX Csum Offload Benchmark

Modify JMicron driver according to stefanha suggestions
  1. jme_process_receive() isn't using a read memory barrier.
  2. Allocate/Free Ring buffers on open/close.
  3. Using jme_free_?x_resources() for allocation fail recover.
  4. Simply use struct io_buffer, instead of jme_buffer_info.
  5. There is no need to discard pending TX buffers.
  6. extra memset in probe.
  7. Ring size tune, performance test.

Detailed modifications can reference the jme_driver_bak branch of my git tree.


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