Baremetal XXV Ethernet driver
Table of Contents
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 athttps://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 supportedPerformance
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
Code Block | ||
---|---|---|
| ||
--- Enter main() --- This test may take several minutes to finish ChanId 1, MacAddr: 0x0 0x0 0x53 0xE 0x9F 0xB0 ChanId 1 Single frame interrupt example passed ChanId 2, MacAddr: 0x0 0xF 0x53 0xE 0x9F 0xB0 ChanId 2 Single frame interrupt example passed ChanId 3, MacAddr: 0x0 0x10 0x53 0xE 0x9F 0xB0 ChanId 3 Single frame interrupt example passed ChanId 4, MacAddr: 0x0 0x18 0x53 0xE 0x9F 0xB0 ChanId 4 Single frame interrupt example passed ChanId 5, MacAddr: 0x0 0x20 0x53 0xE 0x9F 0xB0 ChanId 5 Single frame interrupt example passed ChanId 6, MacAddr: 0x0 0x28 0x53 0xE 0x9F 0xB0 ChanId 6 Single frame interrupt example passed ChanId 7, MacAddr: 0x0 0x30 0x53 0xE 0x9F 0xB0 ChanId 7 Single frame interrupt example passed ChanId 8, MacAddr: 0x0 0x38 0x53 0xE 0x9F 0xB0 ChanId 8 Single frame interrupt example passed ChanId 9, MacAddr: 0x0 0x40 0x53 0xE 0x9F 0xB0 ChanId 9 Single frame interrupt example passed ChanId 10, MacAddr: 0x0 0x48 0x53 0xE 0x9F 0xB0 ChanId 10 Single frame interrupt example passed ChanId 11, MacAddr: 0x0 0x50 0x53 0xE 0x9F 0xB0 ChanId 11 Single frame interrupt example passed ChanId 12, MacAddr: 0x0 0x58 0x53 0xE 0x9F 0xB0 ChanId 12 Single frame interrupt example passed ChanId 13, MacAddr: 0x0 0x60 0x53 0xE 0x9F 0xB0 ChanId 13 Single frame interrupt example passed ChanId 14, MacAddr: 0x0 0x68 0x53 0xE 0x9F 0xB0 ChanId 14 Single frame interrupt example passed ChanId 15, MacAddr: 0x0 0x70 0x53 0xE 0x9F 0xB0 ChanId 15 Single frame interrupt example passed ChanId 16, MacAddr: 0x0 0x78 0x53 0xE 0x9F 0xB0 ChanId 16 Single frame interrupt example passed Test passed --- Exiting main() --- |
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
Code Block | ||
---|---|---|
| ||
--- Enter main() --- This test may take several minutes to finish USXGMII setup at 1000Mbps ChanId 1, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0x0 ChanId 1 Single frame interrupt example passed ChanId 2, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0x10 ChanId 2 Single frame interrupt example passed ChanId 3, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0x20 ChanId 3 Single frame interrupt example passed ChanId 4, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0x30 ChanId 4 Single frame interrupt example passed ChanId 5, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0x40 ChanId 5 Single frame interrupt example passed ChanId 6, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0x50 ChanId 6 Single frame interrupt example passed ChanId 7, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0x60 ChanId 7 Single frame interrupt example passed ChanId 8, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0x70 ChanId 8 Single frame interrupt example passed ChanId 9, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0x80 ChanId 9 Single frame interrupt example passed ChanId 10, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0x90 ChanId 10 Single frame interrupt example passed ChanId 11, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0xA0 ChanId 11 Single frame interrupt example passed ChanId 12, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0xB0 ChanId 12 Single frame interrupt example passed ChanId 13, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0xC0 ChanId 13 Single frame interrupt example passed ChanId 14, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0xD0 ChanId 14 Single frame interrupt example passed ChanId 15, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0xE0 ChanId 15 Single frame interrupt example passed ChanId 16, Dest MacAddr: 0x0 0x0 0x53 0xE 0x9F 0xF0 ChanId 16 Single frame interrupt example passed Test passed --- Exiting main() --- |
Known Issues/Limitations
- Full checksum offload, VLAN, flow control and 1588 are not supportedChange 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.
...