[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [K12OSN] Re: LTSP Lab Slow to Boot (Todd O'Bryan)



New gigabit card with no driver problems = $20.
Sanity = priceless.

Todd

2008/9/17 robert pogson <robert pogson gmail com>
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.

see http://users.sosdg.org/~qiyong/lxr/source/drivers/net/forcedeth.c?v=2.6.10

"
 Known bugs:
84 * We suspect that on some hardware no TX done interrupts are generated.
85 * This means recovery from netif_stop_queue only happens if the hw timer
86 * interrupt fires (100 times/second, configurable with NVREG_POLL_DEFAULT)
87 * and the timer is active in the IRQMask, or if a rx packet arrives by chance.
88 * If your hardware reliably generates tx done interrupts, then you can remove
89 * DEV_NEED_TIMERIRQ from the driver_data flags.
90 * DEV_NEED_TIMERIRQ will not harm you on sane hardware, only generating a few
91 * superfluous timer interrupts from the nic.

"

"
/*
485 * Maximum number of loops until we assume that a bit in the irq mask
486 * is stuck. Overridable with module param.
487 */
488 static int max_interrupt_work = 5;
 

"

"
 MODULE_PARM_DESC(max_interrupt_work, "forcedeth maximum events handled per interrupt");


"

Other versions have more options like:
http://www.gelato.unsw.edu.au/lxr/source/drivers/net/forcedeth.c
"
 module_param(max_interrupt_work, int, 0);
3406 MODULE_PARM_DESC(max_interrupt_work, "forcedeth maximum events handled per interrupt");
3407 module_param(optimization_mode, int, 0);
3408 MODULE_PARM_DESC(optimization_mode, "In throughput mode (0), every tx & rx packet will generate an interrupt. In CPU mode (1), interrupts are controlled by a timer.");
3409 module_param(poll_interval, int, 0);
3410 MODULE_PARM_DESC(poll_interval, "Interval determines how frequent timer interrupt is generated by [(time_in_micro_secs * 100) / (2^10)]. Min is 0 and Max is 65535.");
3411 module_param(disable_msi, int, 0);
3412 MODULE_PARM_DESC(disable_msi, "Disable MSI interrupts by setting to 1.");
3413 module_param(disable_msix, int, 0);
3414 MODULE_PARM_DESC(disable_msix, "Disable MSIX interrupts by setting to 1.");
3415
3416 MODULE_AUTHOR("Manfred Spraul <manfred colorfullife com>");
3417 MODULE_DESCRIPTION("Reverse Engineered nForce ethernet driver");
3418 MODULE_LICENSE("GPL");
"

I have long forgotten the settings I used, but this may help you find where to look. My recollection is that I polled with
optimization_mode=1
poll_interval=10000

Your guess is as good as mine what the units were. I just know I could transfer 112 MB/s with it.

Thank Goodness we have open source... ;-)

_______________________________________________
K12OSN mailing list
K12OSN redhat com
https://www.redhat.com/mailman/listinfo/k12osn
For more info see <http://www.k12os.org>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]