The design uses the AXI Ethernet driver present in Linux kernel to configure MRMAC and initialize four lanes to 10G ethernet rates. The driver initializes MCDMA’s S2MM and MM2S channel descriptors and enables them to transfer data to and from system memory. The driver also does interrupt handling when a packet is received or transmitted via DMA.
Linux Ethernet Driver Features
- Supports 4x10G Ethernet subsystem
- IEEE 1588 support for 4x10G Ethernet subsystem
- Configuration support for 4 x 10G MRMAC
- Support for common ethtool queries
- NAPI support
- Support for jumbo frames
- Supports AXI MCDMA DMA configuration
- Multi-queue support
The application in user space uses Linux socket interface to communicate with ethernet device. The user application sends/receives data via socket interface calls, the socket layers sends the data to/receives data from protocol layer. The protocol layer adds required headers to data based on protocol requested by application at transmission and removes the protocol headers during reception of packet. The MRMAC Ethernet driver forwards the packet from host memory to the device at transmission and from the device to host memory at reception, using MCDMA.