Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 1 May 2019 18:04:06 +0930
From:      "O'Connor, Daniel" <darius@dons.net.au>
To:        freebsd-usb@freebsd.org
Subject:   USB transfers in device drivers
Message-ID:  <3B922C60-32E5-484E-8AFA-28FF7255CF2C@dons.net.au>

next in thread | raw e-mail | index | archive | help
Hi,
I have a device driver for a USB device (a custom Cypress FX2 based =
board) that is relatively simple - it uses the USB FIFO code to create 3 =
FIFOs (one bidirectional slow serial interface, one device->PC fast =
parallel interface from a hardware FIFO) plus a bunch of ioctls for =
getting the FX2 firmware to do various things.

We have been having issues on some systems where the hardware FIFO that =
the FX2 reads (and sends to the PC) fills up, it has about 50msec (96k) =
of buffering (at ~2MByte/sec) which seems like quite a lot to me (given =
the driver sets the USB FIFO to buffer 2048 8k chunks..).

I don't have a solid hypothesis for the failures as yes but one thing =
I'd like to make sure is that the USB stack is keeping the USB hardware =
busy with pending requests - does anyone know if the USB FIFO code does =
that automatically?

I'm currently testing doing 96k transfers (this is the maximum without =
some significant reworking) and the FIFO is 16MByte in size but it still =
fails so any suggestions welcome..

The FreeBSD version at this site is very old (9.3) so we are going to =
update it but it's not easy as the site is quite remote.

The hardware in question is a Supermicro X10SLM-F (Intel C224 Express) =
with an E3-1220 v3 at 3.1GHz, it also has an LSI MegaRAID SAS 9271-4i =
with 4 disks in RAID-5. Unfortunately I do not have ready access to a =
similar system here which is annoying..

Any suggestions welcome!

PS please CC me on replies.

--
Daniel O'Connor
"The nice thing about standards is that there
are so many of them to choose from."
 -- Andrew Tanenbaum





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3B922C60-32E5-484E-8AFA-28FF7255CF2C>