On Tue, 9 Jan 2007, xiaoxin liu wrote: > Hi, Alan > Thanks for your reply. > I still have some questions as follows:
> > Your driver must keep the endpoint queue full at all times. In practice > > this means that you must keep several URBs queued, and each time one of > > them completes your completion handler routine must submit another URB. > > > You mean that I should resubmit a URB in completion handler in my > driver. Yes, that's what I meant. > However, > Currently I submit isochronous transfer request from user application > through ioctl(), not in a kernel usb device > driver. In fact, the completion handler routine is defaultly set as > async_completed(). That is to say, > I can't modify the completion handler to resubmit a URB. > What suggestions for this situation?? Do you mean that your driver runs entirely in userspace? You can still keep the endpoint queue full, but the procedure isn't quite as reliable. All you have to do is submit enough URBs in advance so that the queue never gets empty, even given the normal overhead and latency of running user programs. So for example, let's assume that your system has 100-ms latency for task-switching to your program. Then you would need to keep at least 100 ms worth of data in the endpoint queue at all times. It doesn't all have to be in one URB; in fact you're better off splitting it among several URBs. For instance, you might submit 5 URBs, each of which contains 25 ms of data. And like I said before, every time an URB completes you must submit a new one. You don't have to resubmit in the completion handler itself; the handler can set a variable telling the main program how many URBs to resubmit. Alan Stern ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel