Hi, I've been away for new years eve, therefore the delay... I try to answer/comment all mails you sent me on this subject.
> Try using a non-UHCI controller. Well, I would if I had one. But even if so, it would not solve my problem since the 'target' hardware in question has a uhci controller. > Axel, can you try it again, but this time, use the time command > to see what the CPU utilization looks like? The result looks like that: real 0m32.123s user 0m0.190s sys 0m0.038s So, as I expected the cpu speed seems not to be the problem. > In addition to what Johannes has mentioned, an important factor > is the overhead during submission of new requests. Axel didn't say > explicitly how his test program works, but if it waits for each > URB to complete before submitting the next URB then this could > be an important factor. I can easily imagine it explaining the > difference between the desktop and laptop timings. What I do is submit one urb, then wait for it (wait_event_interruptible_timeout() with a complete() in the complete handler of the urb), then queue the next urb. I can imagine that this causes the 'low' throughput when requesting many small transfers, but I can not see how this can explain the drop of throughput with large transfers, since the wait-for-requeue overhead decreases continuously. > I wonder if there is some other problem. Maybe adding some timing > information to the software portion of the TD would be interesting to > see if there are any delays between completing each individual TD. I would gladly try and test any patches that could help in tracking down the problem, but I fear I would heavily rely on your assistance since I have no knowledge of the internals of a hcd controller/software. > OTOH it seems uhci-hcd uses some better heuristics wrt. when to check > whether the urb timed out and how to go on then (DEPTH_INTERVAL). So I'm > not sure whether uhci-hcd FSBR timeout handling might explain the observed > results. Increasing FSBR_DELAY should tell. So, you suggest I look for a constant called FSBR_DELAY increase it and see if this influences my throughput? My old driver (2.4) did never queue an urb with a larger transfer_buffer that 64k. If the total buffer was larger than 64k, I simply resubmitted the urb in the complete handler with updated buffer pointer and buffer size. I can't remember why I did that and I thought with rewriting it for 2.6 I could make it 'proper'. Anyway, my old driver did not have this problem and I could do the same thing with 2.6. But I would rather help fixing it, but working around it. Thanks, Axel. ------------------------------------------------------- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel