For our project we use grapeboard (LS1012A) with Cypress FX3, and we have a problem when transferring data via USB 3.0 bus on high speed rates.
Without any background processes, we achieved stable tranfer at 2.9 Gbit/s, but we need to write this data to SSD.
If, in parallel with reading data from the USB, we somehow use DMA channels - write to SSD, use a copy_to_user function or a dmatest module with blocks greater than 64-128 kbytes, transmission via the USB is interrupted after some time with an error COMP_TX_ERR. With blocks of more than 1 MB, transmission is interrupted immediately. Simple memcpy test does not affect on the transmission.
Similarly, if we use a burstlen less than 16, for example 4 or 2, the transmission stability increases, but still remains unstable and can be interrupted after hours of operation.
What is the reason for this behavior?
How can we increase stability of the transfer?
Can we increase the priority of the DMA channel of the XHCI controller?
Logs with xhci trace is attached in xhci-trace-log.txt. Boot log is in boot-log.txt.
Kernel version 4.9.62.
I will be glad to any advice. Thank you.