<div dir="ltr">New gigabit card with no driver problems = $20.<br>Sanity = priceless.<br><br>Todd<br><br><div class="gmail_quote">2008/9/17 robert pogson <span dir="ltr"><<a href="mailto:robert.pogson@gmail.com">robert.pogson@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div dir="ltr">I had this problem two years ago. I had to tune the forcedeth drivers with module options. It was crazy. The driver would not be able to clear the interrupt flag and just pause. I finally adjusted the parameters to polling instead of interrupt service. Fortunately this only affected NFS and it was not terribly busy.<br>

<br>see <a href="http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10" target="_blank">http://users.sosdg.org/~qiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10</a><br><br>"<pre><b><i> Known bugs:</i></b><br>
 <a name="11c7151f40d26a71_L84" href="http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L84" target="_blank">84</a> <b><i> * We suspect that on some hardware no TX done interrupts are generated.</i></b><br>

 <a name="11c7151f40d26a71_L85" href="http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L85" target="_blank">85</a> <b><i> * This means recovery from netif_stop_queue only happens if the hw timer</i></b><br>
 <a name="11c7151f40d26a71_L86" href="http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L86" target="_blank">86</a> <b><i> * interrupt fires (100 times/second, configurable with NVREG_POLL_DEFAULT)</i></b><br>

 <a name="11c7151f40d26a71_L87" href="http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L87" target="_blank">87</a> <b><i> * and the timer is active in the IRQMask, or if a rx packet arrives by chance.</i></b><br>
 <a name="11c7151f40d26a71_L88" href="http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L88" target="_blank">88</a> <b><i> * If your hardware reliably generates tx done interrupts, then you can remove</i></b><br>

 <a name="11c7151f40d26a71_L89" href="http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L89" target="_blank">89</a> <b><i> * DEV_NEED_TIMERIRQ from the driver_data flags.</i></b><br> <a name="11c7151f40d26a71_L90" href="http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L90" target="_blank">90</a> <b><i> * DEV_NEED_TIMERIRQ will not harm you on sane hardware, only generating a few</i></b><br>

 <a name="11c7151f40d26a71_L91" href="http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L91" target="_blank">91</a> <b><i> * superfluous timer interrupts from the nic.</i></b><br><br></pre>"<br>
<div class="gmail_quote"><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<br>
 "<pre><b><i>/*</i></b><br><a name="11c7151f40d26a71_L485" href="http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L485" target="_blank">485</a> <b><i> * Maximum number of loops until we assume that a bit in the irq mask</i></b><br>

<a name="11c7151f40d26a71_L486" href="http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L486" target="_blank">486</a> <b><i> * is stuck. Overridable with module param.</i></b><br><a name="11c7151f40d26a71_L487" href="http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L487" target="_blank">487</a> <b><i> */</i></b><br>

<a name="11c7151f40d26a71_L488" href="http://users.sosdg.org/%7Eqiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10#L488" target="_blank">488</a> static int <a href="http://users.sosdg.org/%7Eqiyong/lxr/ident?v=2.6.10;i=max_interrupt_work" target="_blank">max_interrupt_work</a> = 5;</pre>

</blockquote><div> </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><pre><br></pre>"</blockquote><div><br>"<pre> <a href="http://users.sosdg.org/%7Eqiyong/lxr/ident?v=2.6.10;i=MODULE_PARM_DESC" target="_blank">MODULE_PARM_DESC</a>(<a href="http://users.sosdg.org/%7Eqiyong/lxr/ident?v=2.6.10;i=max_interrupt_work" target="_blank">max_interrupt_work</a>, <i>"forcedeth maximum events handled per interrupt"</i>);<br>

<br><br></pre>" <br><br>Other versions have more options like:<br><a href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c" target="_blank">http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c</a><br>
"<pre> <a href="http://www.gelato.unsw.edu.au/lxr/ident?i=module_param" target="_blank">module_param</a>(<a href="http://www.gelato.unsw.edu.au/lxr/ident?i=max_interrupt_work" target="_blank">max_interrupt_work</a>, int, 0);<br>
<a name="11c7151f40d26a71_L3406" href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3406" target="_blank">3406</a> <a href="http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_PARM_DESC" target="_blank">MODULE_PARM_DESC</a>(<a href="http://www.gelato.unsw.edu.au/lxr/ident?i=max_interrupt_work" target="_blank">max_interrupt_work</a>, <i>"forcedeth maximum events handled per interrupt"</i>);<br>

<a name="11c7151f40d26a71_L3407" href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3407" target="_blank">3407</a> <a href="http://www.gelato.unsw.edu.au/lxr/ident?i=module_param" target="_blank">module_param</a>(<a href="http://www.gelato.unsw.edu.au/lxr/ident?i=optimization_mode" target="_blank">optimization_mode</a>, int, 0);<br>

<a name="11c7151f40d26a71_L3408" href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3408" target="_blank">3408</a> <a href="http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_PARM_DESC" target="_blank">MODULE_PARM_DESC</a>(<a href="http://www.gelato.unsw.edu.au/lxr/ident?i=optimization_mode" target="_blank">optimization_mode</a>, <i>"In throughput mode (0), every tx & rx packet will generate an interrupt. In CPU mode (1), interrupts are controlled by a timer."</i>);<br>

<a name="11c7151f40d26a71_L3409" href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3409" target="_blank">3409</a> <a href="http://www.gelato.unsw.edu.au/lxr/ident?i=module_param" target="_blank">module_param</a>(<a href="http://www.gelato.unsw.edu.au/lxr/ident?i=poll_interval" target="_blank">poll_interval</a>, int, 0);<br>

<a name="11c7151f40d26a71_L3410" href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3410" target="_blank">3410</a> <a href="http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_PARM_DESC" target="_blank">MODULE_PARM_DESC</a>(<a href="http://www.gelato.unsw.edu.au/lxr/ident?i=poll_interval" target="_blank">poll_interval</a>, <i>"Interval determines how frequent timer interrupt is generated by [(time_in_micro_secs * 100) / (2^10)]. Min is 0 and Max is 65535."</i>);<br>

<a name="11c7151f40d26a71_L3411" href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3411" target="_blank">3411</a> <a href="http://www.gelato.unsw.edu.au/lxr/ident?i=module_param" target="_blank">module_param</a>(<a href="http://www.gelato.unsw.edu.au/lxr/ident?i=disable_msi" target="_blank">disable_msi</a>, int, 0);<br>

<a name="11c7151f40d26a71_L3412" href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3412" target="_blank">3412</a> <a href="http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_PARM_DESC" target="_blank">MODULE_PARM_DESC</a>(<a href="http://www.gelato.unsw.edu.au/lxr/ident?i=disable_msi" target="_blank">disable_msi</a>, <i>"Disable MSI interrupts by setting to 1."</i>);<br>

<a name="11c7151f40d26a71_L3413" href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3413" target="_blank">3413</a> <a href="http://www.gelato.unsw.edu.au/lxr/ident?i=module_param" target="_blank">module_param</a>(<a href="http://www.gelato.unsw.edu.au/lxr/ident?i=disable_msix" target="_blank">disable_msix</a>, int, 0);<br>

<a name="11c7151f40d26a71_L3414" href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3414" target="_blank">3414</a> <a href="http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_PARM_DESC" target="_blank">MODULE_PARM_DESC</a>(<a href="http://www.gelato.unsw.edu.au/lxr/ident?i=disable_msix" target="_blank">disable_msix</a>, <i>"Disable MSIX interrupts by setting to 1."</i>);<br>

<a name="11c7151f40d26a71_L3415" href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3415" target="_blank">3415</a> <br><a name="11c7151f40d26a71_L3416" href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3416" target="_blank">3416</a> <a href="http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_AUTHOR" target="_blank">MODULE_AUTHOR</a>(<i>"Manfred Spraul <<a href="mailto:manfred@colorfullife.com" target="_blank">manfred@colorfullife.com</a>>"</i>);<br>

<a name="11c7151f40d26a71_L3417" href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3417" target="_blank">3417</a> <a href="http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_DESCRIPTION" target="_blank">MODULE_DESCRIPTION</a>(<i>"Reverse Engineered nForce ethernet driver"</i>);<br>

<a name="11c7151f40d26a71_L3418" href="http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c#L3418" target="_blank">3418</a> <a href="http://www.gelato.unsw.edu.au/lxr/ident?i=MODULE_LICENSE" target="_blank">MODULE_LICENSE</a>(<i>"GPL"</i>);<br>
</pre>
"<br><br>I have long forgotten the settings I used, but this may help you find where to look. My recollection is that I polled with<br>optimization_mode=1<br>poll_interval=10000<br><br>Your guess is as good as mine what the units were. I just know I could transfer 112 MB/s with it.<br>

<br>Thank Goodness we have open source... ;-)<br></div></div>
</div>
<br>_______________________________________________<br>
K12OSN mailing list<br>
<a href="mailto:K12OSN@redhat.com">K12OSN@redhat.com</a><br>
<a href="https://www.redhat.com/mailman/listinfo/k12osn" target="_blank">https://www.redhat.com/mailman/listinfo/k12osn</a><br>
For more info see <<a href="http://www.k12os.org" target="_blank">http://www.k12os.org</a>><br></blockquote></div><br></div>