umcs (4-Port-USB-serial) triggering way too much ehci IRQs
h.schmalzbauer at omnilan.de
Tue Sep 17 17:33:03 UTC 2013
Bezüglich Ian Lepore's Nachricht vom 17.09.2013 18:16 (localtime):
> On Tue, 2013-09-17 at 17:38 +0200, Harald Schmalzbauer wrote:
>>> Try this patch and see what happens:
>>> --- umcs.c (revision 255492)
>>> +++ umcs.c (local)
>>> @@ -230,6 +230,7 @@
>>> .bufsize = 0, /* use wMaxPacketSize */
>>> .callback = &umcs7840_intr_callback,
>>> .if_index = 0,
>>> + .interval = 20, /* ms */
>>> BTW: I see that the umcs driver shouldn't do synchronous control
>>> transfers from the USB interrupt transfer callback. This should be
>>> postponed into some worker thread, for example the USB explore thread.
>>> See USB audio driver for an example.
>> I tried your patch and it works as expected: IRQs decreased to ~64/s
>> when idle/disconnected.
>> One interesting thing I never measured before:
>> Console connection with 115k2 via umcs and 'while ( 2>1 ) echo "---..."
>> end' results in 8000 irqs/s :-( But that's also true for the prolific
>> (uplcom). The latter just goes down to 0.0 irqs/s when idle.
>> Doing the same with uart0 results in 1444irqs/s.
>> Is it by design/unavoidable that transfering the same via USB multiplies
>> by factor 5-6?
> I don't know about that chipset, but with the FTDI chips it does xfers
> in 64 byte chunks and high speed bulk data results in an astronomical
> number of interrupts (and if you go fast enough, lost data). I have
According to ASIX product brief, MCS7840 has 512 byte buffer. Pretty
much for an UART I think, which should make 115k2 baud connections with
less than 30 transfers/s work, or am I missing something?
> some patches that assemble lots of the little chip-size buffers into
> bigger xfers that the ohci/ehci controller can handle without
> interrupting the processor; that helps the problem a bunch.
I think I also have at least one FTDI adapter arround, so I'd happily
testing if I can make it compile on RELENG_9_2.
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 196 bytes
Desc: OpenPGP digital signature
More information about the freebsd-stable