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