UPGRADE YOUR BROWSER

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

Description

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?

Solution

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)

Attachments

Associated Attachments

AR# 64781
Date Created 06/11/2015
Last Updated 06/23/2015
Status Active
Type General Article
Devices
  • Zynq-7000
Tools
  • Vivado Design Suite - 2014.4
Boards & Kits
  • Zynq-7000 All Programmable SoC ZC706 Evaluation Kit