On Tue, Feb 19, 2002 at 02:59:28AM -0800, David Brownell wrote: > By the host controller driver. It's a "periodic" transfer, > which _by design_ is going to be happening over and > over and over again.
Which is a problem. All uses of interrupt out I have met don't need to be periodic - they're used for example in HID if the device has an output interrupt endpoint for sending output reports, and for I-Force devices to send outgoing data. However the nature of the data isn't periodic at all. > > > How is that supposed to work with output transfers then? If you > > > schedule an interrupt transfer and the driver continues to resubmit > > > it, doesn't that just mean that, as the initial writer in this thread > > > noted, you get the same data sent to the endpoint again and again? > > Yes, which is why an interrupt OUT transfer has to modify the buffer. > > And why there's that issue I mentioned (reported in Janary by > Wolfgang Mües) about changing the _length_ of an OUT transfer. > I've some comments I hope to send out, but can't do so much before > Wednesday. It would work if most of the time the interrupt OUT URB could have a transfer_length of 0 bytes of data, but I'm not surw which HCDs will choke on that. > > > What are interrupt outputs supposed to do? If you have just one > > > thing to send are you better off always just sending a bulk one even > > > to an interrupt endpoint? > > "Better off" is a tradeoff. One factor is guaranteed bandwidth: > > > As far as I know the only difference between one-shot out interrupt > > (which is a UHCI-ism :) But that's only a driver issue. I don't believe OHCI/EHCI in hardware wouldn't be able to implement oneshot interrupt transfers. I may be wrong here, though. > Another factor is when the transfer happens ... if your device is > only able to handle data every 16 msec, you're not doing anyone > a favor by trying to send/recv it more often, it'll just choke. So use > interrupt transfers, not bulk transfers. If there is such a device, yes. > Then there's the fact that the transfer sizes are different. For > high speed (480 MBit/sec) interrupts max out at 64 bytes by > default, but single transfers go up to 1KByte and there's also > a "high bandwidth" mode where one endpoint can do 3KBytes > in each microframe (12 KByte/msec, 12 MByte/sec). Bulk > maxpacketsize at High speed is fixed at 512 bytes. Of course, if you stick to the interrupt transfer inflicted sizes, you aren't going to cause problems by using bulk instead. -- Vojtech Pavlik SuSE Labs _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel