On Mon, 29 Aug 2005, Brian Murphy wrote:

> It seems that the acm driver sets the maximum transfer size to
> the wMaxPacketSize field of the relevant endpoint descriptor,
> this is maximum 64 bytes for a bulk high speed endpoint.
>  From my experiments this does not just restrict bulk packets to
> the correct size but also restricts the maximum number of packets
> in a frame to one packet. With 1 frame/ms this gives a limitation of
> 64k/s.
> 
> Changing the line
> 
> acm->writesize = le16_to_cpu(epwrite->wMaxPacketSize);
> 
> to
> 
> acm->writesize = 64*17; /* 17 - number of bulk packets in a USB high 
> speed frame */
> 
> increases performance for writes considerably.
> 
> This hack is almost certainly not optimal for usb 2.0 (full speed) devices.

FYI:  Full speed is 12 Mb/s, and the maximum number of 64-byte bulk
packets in a full-speed frame is 19.  High speed is 480 Mb/s.  There's no
reason (as far as I know) why the writesize needs to have any particular
relation to the size of a packet or the size of a frame.

Alan Stern



-------------------------------------------------------
SF.Net email is Sponsored by the Better Software Conference & EXPO
September 19-22, 2005 * San Francisco, CA * Development Lifecycle Practices
Agile & Plan-Driven Development * Managing Projects & Teams * Testing & QA
Security * Process Improvement & Measurement * http://www.sqe.com/bsce5sf
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to