Baremetal XXV Ethernet driver

Baremetal XXV Ethernet driver


Table of Contents

Introduction

This page provides details related to the standalone xxvethernet driver.
This driver supports XXVEthernet (10G/25G) and USXGMII soft blocks.
XXV Ethernet subsystem consists of a 10G/25G MAC including a 10BaseR PHY.
USXGMII Ethernet subsystem consists of a MAC similar to XXV Ethernet including a USXGMII PHY.

How to enable

-> xxvethernet driver can be found at
https://github.com/Xilinx/embeddedsw/tree/master/XilinxProcessorIPLib/drivers/xxvethernet
The driver structure is as follows:
xxvethernet
|
- doc - Provides the API and data structure details
|
- examples - Reference application to show how to use the driver.
|
- src - Driver source files

Features supported

Controller/Driver features supported

- 10G speed on xxvethernet MAC
- 1G/2.5G/5G/10G speeds on USXGMII MAC
- PHY management and GT management.
- Support for DMA interface
- Statistics gathering
- Optional support for jumbo frames up to 16 KB

Features not supported

- Full checksum offload, VLAN, flow control and 1588 are not supported

Performance

There is no standalone performance benchmark for these 10G/25G and USXGMII MACs.
It is planned to be added later along with lwip support.

Test cases


xxvethernet driver has two examples demonstrating use of XXVEthernet and USXGMII MACs.
Refer to https://github.com/Xilinx/embeddedsw/blob/master/XilinxProcessorIPLib/drivers/xxvethernet/examples/readme.txt for more information

Note:
For all 10G/25G and USXGMII designs, please check the GT reference clock in your design and make sure to program the clock source to provide the same clock.
For ex., on ZCU102, user can program onboard SI570 programmable frequency clock source to supply the required GT frequency.

xxvethernet mcdma example

This is an interrupt driven loopback example demonstrating a simple send-receive test case using XXVEthernet and MCDMA.
This test loops through all 16 channels of the MCDMA connected to XXVEthernet MAC; an internal HW logic was used to direct RX packets to one of the 16 MCDMA channels using MAC address as the filter.
User applications and design need to use their own logic if they intend to direct traffic to different RX channels deterministically.

Run fsbl and then the application elf.
Expected output is

usxgmii mcdma example

This is an interrupt driven loopback example demonstrating a simple send-receive test case using USXGMII and MCDMA.
Since USXGMII has no internal loopback, this test needs to be done with and external loopback on the HW.
The internal USXGMII phy is setup to enable auto-negotiation at 1G speed by default.
This test loops through all 16 channels of the MCDMA connected to USXGMII MAC; an internal HW logic was used to direct RX packets to one of the 16 MCDMA channels using MAC address as the filter.
User applications and design need to use their own logic if they intend to direct traffic to different RX channels deterministic-ally.

Run fsbl and then the application elf.
Expected output is

Known Issues/Limitations

- Full checksum offload, VLAN, flow control and 1588 are not supported

Change log

2020.2

  • Support parallel make execution. 
  • Fix intr_mcdma example compilation on microblaze platform. 
  • Correct XXE_ANA_OFFSET macro name with XXE_ANASR_OFFSET.

483f35d951a8 xxvethernet: Correct XXE_ANA_OFFSET macro name with XXE_ANASR_OFFSET
4dc85994d6fb Makefile: Remove realpath command
d6867a5c0012 xxvethernet: Modify makefile to support parallel make execution
73cea98b26be xxvethernet: Fix intr_mcdma example compilation on microblaze platform

2020.1
  • Fix gcc warning in driver and examples.
  • Driver tcl changes for pmufw and bsp generation failure.

Commit Id's:

ddfd905 xxvethernet: Fix gcc warning in mcdma interrupt example
3e96ac3 xxvethernet: Fix pmufw compilation with custom design
cdbe80a xxvethernet: Fix bsp generation error in a custom design
258eafa xxvethernet : Fix gcc warnings
3d79969 xxvethernet: Added dependencies.props file for xxvethernet driver
2019.2
  • Fix bsp generation error for xxvethernet axis_rx_0 external port design.
Commit Id's:
bfcb71b xxvethernet: Fix bsp generation error for axis_rx_0 external port design
2019.1
In xxvethernet tcl use an identifiable suffix for global variables.
Commit Id's:
41ddfdd xxvethernet: Use an identifiable suffix for global variables
2018.3
  • Fix interrupt id generation on zynqmp design.
  • Fix error generating bsp sources for specific design
  • Add API to lookup by base address & IsMcdma.
  • Update tcl to add mcdma in target periph

Commit Id's:

7cec53f Fix interrupt ID generation for ZynqMP designs
3306f2e Fix error generating bsp sources for specific design
153c16d Add API to lookup by base address & IsMcdma
8b3722f Update tcl to add mcdma in target periph

2018.2
None

2018.1

  • First release of XXV ethernet and USXGMII MAC driver.

Commit Id's:

0cc45f3 drivers: Add new driver for XXV Ethernet MAC
75df898 xxvethernet: Add support for USXGMII MAC
f243df8 xxvethernet: Add example for USXGMII

Related Linkshttp://www.wiki.xilinx.com/Baremetal+Drivers+and+Libraries
http://www.wiki.xilinx.com/AXI+MCDMA+Standalone+Driver