Ok, I've just completed a thorough set of tests regarding my previously
described packet size problem with my USB ethernet (adsl) driver. It
appears to me that either a) UHCI just can't perform like OHCI, or b)
the UHCI driver has problems. My information is reported below. I'm
running on RedHat 7.2 with their stock kernel - 2.4.7-10.

All transfers are on a bulk-in endpoint. URBs are queued with
USB_QUEUE_BULK flag set. All URBs have their transfer_buffer_length set
to 3392 bytes (the least common multiple of ATM cell size and bulk
transfer size - 53*64). These transfers are all responses from pinging
another machine with ping data sizes of 4k and 16k. This is the simplest
way to illustrate and reproduce the problem. The problem affects 
virtually all traffic, not just traffic related to pings.

  HCD     URBs  InWhole   InCATC                InURB              Ping?
1 UHCI    1     4717      3127 or 3074          3127 or 3074       No
2 UHCI    64    4717      3127 or 3074          3010 or 3063       No
3 OHCI    1     4717      4717                  3392 and 1325      Yes
4 OHCI    64    4717      4717                  3392 and 1325      Yes
5 OHCI    1     18868     3392*5 and variable   3392 and variable  No
6 OHCI    64    18868     18868                 3392*5 and 1908    Yes

Some notes on the table:
  URBs    = number of URBs queued on the pipe
  InWhole = entire size of data expected to receive
  InCATC  = size of "bulk in" transfers as seen in CATC trace
  InURB   = value of "actual_length" in the URBs returned
  Ping?   = whether or not the ping was successful
  
I would expect that from a USB driver's perspective, what he gets in 
URBs should be the same regardless of what the HCD is. Is this 
expectation wrong?

I can accept the fact that for case #5 - we're simply running out of 
time to receive all of the data. By the time we've queued up the URB 
to get the last chunk of data, we've lost some data? Or, more likely, 
we've lost some data somewhere from the first to the last chunk, but 
since there is lots of data, the buffers are all full the urb until 
the last one.

Anybody have any clues here? Anything else I can provide that will help?

Thanks,
-Chris


_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to