Hi,
We have connected a DM8168 to an fpga over pci express. The fpga has a 2 lanes, gen 1 interface.
We wrote a small driver to access the fpga using edma - nothing fancy.
We did a bandwidth test and are currently limited to 120 MB/s.
According to the spec, the maximum bandwidth of 2 lanes gen 1 is 500 MB/s, so, we expected more. :)
We looked at the bus with a protocol analyser (see screenshot below) and noticed the following. (N=netra, F=fpga)
* N -> F: packet is sent at timestamp 0.
* F -> N: ack is sent back 708 ns later.
* F -> N: fpga sents an update flow control packet.
* N -> F: netra sent the next packet. (with another small time delay)
Thus: it seems that the netra is waiting on the ack before sending a new data packet? AFAIK, this isn't necessary? The netra should keep transmitting until the window is empty. It shouldn't be waiting on the ack?
Have you seen this behaviour before? How can we solve it? Is this a limitation?
Theo