We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 64781

XAPP1082: AXI Ethernet Design Iperf Stress Test Stalls After A Few Iterations When Connected to a USB-to-Ethernet Adapter


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.

Fix: 0001-net-xilinx-Fix-lost-wake-up-scenario-in-xmit.patch

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.

Fix: 0002-net-xilinx-Restrict-updating-TAIL-pointer-when-cur_p.patch

Note: These patches needs to be applied on top of the XAPP 1082 2014.4 patch (0001-ethernet-xilinx-Add-XAPP1082-support.patch)


Associated Attachments

AR# 64781
Date 11/13/2017
Status Active
Type General Article
  • Zynq-7000
  • Vivado Design Suite - 2014.4
Boards & Kits
  • Zynq-7000 SoC ZC706 Evaluation Kit
Page Bookmarked