Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This page provides details related to the light weight IP (LWIP) library and the SW app lwip echo server.

...

Table of Contents
excludeTable of Contents

Introduction

LWIP211 LWIP213 provides a light weight TCP/IP stack to use with ethernet interfaces. It supports:
  • GEM on Zynq, Zynq Ultrascale+ MPSoC and Versal (using emacps driver)
  • AXI ethernet (using axiethernet driver)


How to enable

  1. lwip211 lwip213 library can be found at
    https://github.com/Xilinx/embeddedsw/tree/master/ThirdParty/sw_services/lwip211lwip213
    lwip211lwip213
    |
    - doc - Provides the API and data structure details
    |
    - src - Driver source files which are further organized into
    ||
    ---- contrib/ports/xilinx - Contains the interface specific implementation
    ||
    ---- lwip-2.01.2 3 - Contains the stack implementation
  2. lwip_echo_server is an application demonstrating the use of lwip library with a basic echo test using telnet. It can be found at
    https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_apps/lwip_echo_server

Features supported

1. GEM on Zynq/ZynqMP/Versal

Controller/Driver features supported

  • All the basic controller features are supported through the controller driver emacps - 10/100/1000 speeds, PHY management, DMA, Packet buffer support, Checksum offload.
  • ZynqMP and Versal only: 64 bit descriptor support, Priority queue support, Jumbo frame support.

Stack Features

  • TCP
  • UDP
  • DHCP

PHY configurations

lwip echo server supports the following PHY configurations:

...

Note: AMD Xilinx embeddedsw build flow is changed from 2023.2 release to adapt to the new system device tree based flow. For further information, refer to the wiki page Porting embeddedsw components to system device tree (SDT) based flow - Xilinx Wiki - Confluence (atlassian.net).

The .yaml(in data folder) and CMakeLists.txt & lwip213.cmake (in src folder) files are needed for the System Device Tree based flow. The Driver .tcl and .mld files are for the older build flow which will be deprecated in the future.


Features supported

1. GEM on Zynq/ZynqMP/Versal

Controller/Driver features supported

  • All the basic controller features are supported through the controller driver emacps - 10/100/1000 speeds, PHY management, DMA, Packet buffer support, Checksum offload.
  • ZynqMP and Versal only: 64 bit descriptor support, Priority queue support, Jumbo frame support.

Stack Features

  • TCP
  • UDP
  • DHCP

PHY configurations

lwip echo server supports the following PHY configurations:

FamilyPHYSupportRemarks
ZynqRGMIIYes

SGMII in PLYesRefer to AR# 66006

1000BaseX in PLYesRefer to AR# 66006

GMII2RGMII convertor in PLYes
ZynqMPRGMIIYesSGMIINoSGMII in PLYesRefer to xapp1306

PS SGMII (with fixed link)YesEnable library config parameter "sgmii_fixed_link" (2023.1 and above)

SGMII in PLYesRefer to xapp1306

1000BaseX in PLYesRefer to xapp1306

GMII2RGMII convertor in PLYes
VersalRGMIIYes


...

MII PHY support

Features not supported

  • The following features are not supported:
    • MCDMA
    • 10G/25G MAC

Performance

...

  • There is no support for common MDIO bus for two GEMs on lwip. For ex., on VCK190 board, GEM0 can be used with TI PHY (at PHY address 1) via the dedicated MDIO0 bus but GEM1 cannot be used with TI PHY at PHY address 2 via the common MDIO0.

Performance

These benchmark performance numbers were obtained by connecting Xilinx boards to Linux PCs/server machines (Ubuntu/Red Hat Enterprise).
The application used is the lwip SW app (see test cases below) with optimal settings on the board side. iperf is run on the linux machine.

Zynq

Board: ZC706
CPU Freq: 666MHz (A9)
Link Speed: 1000Mbps, Full duplex
Raw mode (standalone)

...

Performance measurement with lwip library can be done using the TCP/UDP server/client SW apps:
Raw mode:
https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_apps/lwip_tcp_perf_server
https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_apps/lwip_tcp_perf_client
https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_apps/lwip_udp_perf_server
https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_apps/lwip_udp_perf_client
Socket mode:
https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_apps/freertos_lwip_tcp_perf_server
https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_apps/freertos_lwip_tcp_perf_client
Socket mode:
https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_apps/freertos_lwip_tcp_perf_server
https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_apps/freertos_lwip_tcp_perf_client
https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_apps/freertos_lwip_udp_perf_server
https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_apps/freertos_lwip_udp_perf_client

Xilinx HW running one of the above lwip applications can be connected to a standard linux machine (Ubuntu) to obtain optimal performance numbers.
Raw or socket mode TCP/UDP client/server can be run on Xilinx HW while the iperf server/client (in suitable pairs) can be run on the linux machine.
Refer to the SW apps' README files for more information

NOTE: These performance tests are not supported or benchmarked with emaclite. The application throws an error message to indicate the same when built on emaclite designs.

Miscellaneous functional test

lwip library examples folder contains additional functional tests such as:
- IGMP test case
- TFTP server test case
- TFTP client test case
- Webserver test case
Please refer to this readme file for additional information:
https://github.com/Xilinx/embeddedsw/treeblob/master/libThirdParty/sw_apps/freertos_lwip_udp_perf_server
https://github.com/Xilinx/embeddedsw/tree/master/lib/sw_apps/freertos_lwip_udp_perf_client
Xilinx HW running one of the above lwip applications can be connected to a standard linux machine (Ubuntu) to obtain optimal performance numbers.
Raw or socket mode TCP/UDP client/server can be run on Xilinx HW while the iperf server/client (in suitable pairs) can be run on the linux machine.
Refer to the SW apps' README files for more information

NOTE: These performance tests are not supported or benchmarked with emaclite. The application throws an error message to indicate the same when built on emaclite designs.

Miscellaneous functional test

lwip library examples folder contains additional functional tests such as:
- IGMP test case
- TFTP server test case
- TFTP client test case
- Webserver test case
Please refer to this readme file for additional information:services/lwip213/examples/README.txt

Known issues/Limitations

  • No support for 1588
  • No Support for 10G/25G
  • No MCDMA support
  • Performance numbers are not benchmarked on PL interfaces on Microblaze
  • lwip perf client application cannot be rerun without a power on reset. For ex., doing rst -proc from xsdb before downloading the executable again does not work. It is required to perform "power 0 power 1" in systest before running a new test.

1. GEM

None

2. AXI Ethernet

  • The current lwip stack won't support 1G Non processor/Non buffered mode feature
  • No Support for Legacy 10G and 10G/25G MAC.

Current ARs

  • There is an issue with freertos support for AXI Ethernet + FIFO designs in 2017.1 and 2017.2. For details refer to AR-69578.
  • Emaclite support in lwip is broken in 2018.2. Please refer to AR-71330.

Change log

2023.2

https://github.com/Xilinx/embeddedsw/blob/master/ThirdParty/sw_services/lwip211/examples/README.txt

Known issues/Limitations

  • No support for 1588
  • No Support for 10G/25G

1. GEM

None

2. AXI Ethernet

  • The current lwip stack won't support 1G Non processor/Non buffered mode feature
  • No Support for Legacy 10G and 10G/25G MAC.

Current ARs

  • There is an issue with freertos support for AXI Ethernet + FIFO designs in 2017.1 and 2017.2. For details refer to AR-69578.
  • Emaclite support in lwip is broken in 2018.2. Please refer to AR-71330.

Change log

xilinx_v2023.2/doc/ChangeLog#L537

2023.1

https://github.com/Xilinx/embeddedsw/blob/xilinx_v2023.1/doc/ChangeLog#L231

2022.2

https://github.com/Xilinx/embeddedsw/blob/xlnx_rel_v2022.2/doc/ChangeLog#L178

2022.1

https://github.com/Xilinx/embeddedsw/blob/xilinx_v2022.1/doc/ChangeLog#L161

2021.2

https://github.com/Xilinx/embeddedsw/blob/xlnx_rel_v2021.2/doc/ChangeLog#L138

2020.2

Summary:

  • Bugfixes related to RX BD setup, RX pbuf handling in error path, mkfs format in examples, VCU118 PHY handling and lwip timer & delay handling.
  • Minor changes in lwip app tcl checks and usage of canonical definitions.

...

https://github.com/Xilinx/embeddedsw/commits/xilinx-v2020.1/ThirdParty/sw_services/lwip211

3e7863e sw_apps: Remove xps_timer reference

...

AXI Ethernet Standalone Driver

Library documentation - https://docs.xilinx.com/r/en-US/oslib_rm/Using-lwIP