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>