Mahlzeit

I'm currently test concurrent usage of multiple USB smart card
readers, currently in a 32 device configuration. I'm doing my
testing with 2.4.20-pre11 because of these kernels I tried out
it is the best working one. The hostcontroller is UHCI and
I am using usb-uhci.

When using these readers doing constant I/O there happen packet
shifts. On the last test run with about 600000 commands this
happenend once. This doesn't look much, but it does really
interfere program execution.

Normal execution is sending alternately a BULK OUT to the reader
and the reader sends back a INT IN, that he is ready for a BULK IN.
The BULK IN is done and the host can again send a BULK OUT.

Whe the above mentioned error occures, the BULK OUT is sent to
the reader, but not INT IN is comming to the cyberjack driver.
cyberjack_read_int_callback is never called, not after the
reader internal timeout of 4 seconds where it send a keep alive
packet and not after 1 minute. The driver sends after an timeout
a BULK OUT to the reader to resend the lost packet. After that
cyberjack_read_int_callback get's called and it can to a BULK IN,
but the data received there is the response to the first BULK OUT.
Then host sends a new BULK OUT and receives the response for the
resend request. Thereafter all the BULK INs are shifted back.

BULK OUT 1 ->
        Timeout
BULK OUT resend 1 ->
   <- INT IN/BULK IN 1
BULK OUT 2 ->
   <- INT IN/BULK IN 1
BULK OUT resend 2 ->
   <- INT IN/BULK IN 2
BULK OUT 3 ->
   <- INT IN/BULK IN 2
...

There have also been seen similar effects with some MS Windows
drivers. There the packets where received by the computer (seen
with an USB analyzer) but also the device drive it self did not
get them, because it did lay around in some buffer. So I asume
it is here a similar problem.

It seams also so, that the number of timeouts increase, when I
enable dbg-Output in cyberjack.c.

Any idea what could be the problem here?

I would assume, that it is somewhere in usb-uhci.c. How do I
enable dbg-Output there? By removing the "#define dbg(...) do
{} while (0)" line?


Thanks
endergone Zwiebeltuete



-------------------------------------------------------
This sf.net email is sponsored by: See the NEW Palm 
Tungsten T handheld. Power & Color in a compact size!
http://ads.sourceforge.net/cgi-bin/redirect.pl?palm0001en
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to