I am working on an AXI Ethernet design based on XAPP1082.
I am using a USB to Ethernet Adapter ASIX AX88179.
When I perform the Iperf stress test, I noticed that the network traffic begins to slow and finally comes to a halt after a few iterations.
Is this behavior expected?
Theoretically, this issue could occur with any USB-to-Ethernet Adapter peer.
To fix this issue, please follow the steps below:
The patches are linked to this article.
a) Implemented proper locking in the AXI Ethernet driver for the transmit path.
In the xmit function, add a lock before checking the free BD count and going to netif_stop_queue, so that the TX post-processing wake up event is not missed out.
This solution fixes the lost wakeup problem.
b) Restrict re-submission of BDs whose status is not updated by IP.
Software must not resubmit a BD which is already under hardware control, but whose status has not been updated by hardware yet.
The work-around is to submit TX frames when the current pointer is less than the tail pointer, and on wrap-around condition, stop the network stack and return busy.
Note: These patches needs to be applied on top of the XAPP 1082 2014.4 patch (0001-ethernet-xilinx-Add-XAPP1082-support.patch)
|Name||File Size||File Type|
|Boards & Kits||