David Brownell wrote:
On Tuesday 27 January 2009, Inaky Perez-Gonzalez wrote:
The problem of having a single URB per s/g node is the overhead. When
you need to insert headers in the middle of a data stream (for example)
every so many bytes, the URB overhead starts to be felt.
That overhead is linear in the number of bytes, not in the
number of URBs. One URB of 64KB; or sixteen of 4KB; same
overhead. Scatterlists are irrelevant.
They might have the same overhead but they're not equivalent because
you've lost the application layer framing. The is a separate issue to
what Inaky is talking about.
For best throughput WUSB requires the largest wMaxPacketSize of 3584.
If 64 KiB transfer is split into 16x 4KiB transfers, the device will see
one 3.5 KiB packet, one (short!) 512 B packet and so on. This does not
work.
Either:
1. The s-g list is passed to the HCD (if the hardware is capable).
or,
2. URBs with s-g elements that are not a multiple of wMaxPacketSize
length are linearized into one (or more) suitable bounce buffers.
David
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html