I fixed it, maybe.

On Fri, Nov 26, 2010 at 1:52 PM, Scott Nicholas
<scott.nicho...@scottn.us> wrote:
> On Fri, Nov 26, 2010 at 4:39 AM, Helmut Schaa
> <helmut.sc...@googlemail.com> wrote:
>>
>> Btw. did you check if hardware crypto is working fine? If hw crypto doesn't
>> work it would fall back to software which could explain such a CPU 
>> utilization.
>>
>> Helmut
>>
>>
>
> Haven't even used any crypto yet. I do recall disabling LEDs helping.
> Thinking, the other driver didn't use a separate thread. Maybe it's
> the context switching and scheduling... That it'd help just to keep it
> in the kernel context.... Is my last stab-in-the-dark idea anyway
> without having some sort idea where the cycles are spent.
>
> --
> Scott
>

I basically changed rt61pci_interrupt()'s last line to return
rt61pci_interrupt_thread() instead of waking the thread to do the
work. got a warning at run-time of course from kernel/softirq.c and
net/core/skbuff.c about being in an IRQ, but CPU usage was very low,
5%.

My test has been just running 'top' on serial console of device, and
either downloading from my laptop a 100mb test file or just pinging
the router with multiple instances of large icmp packets.

I then tried having just TX in the thread. Went back up, but not soo bad.

So assuming this way of checking system load is accurate, we gain a
lot from removing the thread.  This is probably good in a router
anyway. So next, to find about functions that shouldn't run in irq
context (and equivalents which can), or if there is a later place we
can off-load to thread, if these helper threads can have different
scheduling/priorities set, etc ...?

That's all I know about, was hoping for ideas from the experts.

Regards,
Scott Nicholas
_______________________________________________
openwrt-devel mailing list
openwrt-devel@lists.openwrt.org
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to