usb/110855: ugen: interrupt in msgs are truncated when
buffer is full
Adam Kropelin
akropel1 at rochester.rr.com
Tue Mar 27 23:52:01 UTC 2007
Hans Petter Selasky wrote:
> The new USB stack has this fixed already. What I do is that the USB
> driver stops polling the interrupt endpoint when the user-land
> application does not read data. When the user-land application has
> read a packet, the interrupt endpoint is started again. The only
> problem is that some devices, like a Microsoft mouse I have, stops
> working immediately when its internal buffer overflows. Bad hardware
> design. But if your hardware is not like that, the new ugen, which is
> part of the new USB driver, will work great for you.
>
> Also packet alignment is kept between reads: Only one packet per read.
And there was much rejoicing! The old ugen behavior of returning
multiple reports in a single read() -- or a report-and-a-half if your
buffer was unfortunately sized -- has caused me untold anguish. I look
forward to the new stack going mainline...
--Adam
More information about the freebsd-usb
mailing list