Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 Jun 2011 10:43:03 +0200
From:      Luca Pizzamiglio <l.pizzamiglio@bally-wulff.de>
To:        freebsd-usb@freebsd.org
Subject:   Read from bulk end point
Message-ID:  <4E084297.2040200@bally-wulff.de>

next in thread | raw e-mail | index | archive | help
Hi USB list,

I've a little problem, but I'm not able to find a solution...
I've a generic custom USB device with several end points.
One of them (a bulk one) is read periodically (polled, 64 byte) every 
second. There was some time inconsistencies, so I checked the USB 
traffic with a sniffer, and I discovered that transactions are compacted 
at the start of the loop in a block of 64 read (64 byte * 64 msg = 4096 
byte). In other words, on the bus the first read is followed immediately 
by the next 63 read.

I guess that this is a pre-fetch optimization for BULK end points. How 
can I disable this optimization for this end point? How can I come back 
to a more "real-time" behavior? I tried to play with open() flags 
(O_NONBLOCK, O_DIRECT) without luck.

Using FreeBSD 7 with HPS stack, this behavior didn't happen. Every read 
consists in 1 read on the bus and everything is fine.

Thanks in advance!

Luca



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4E084297.2040200>