Driver for the Ethernet peripheral on RZ microprocessor. This module implements the Ethernet Interface.
Overview
This module performs Ethernet frame transmission and reception using an Ethernet controller (GMAC).
Features
The Ethernet module supports the following features:
Transmit/receive processing
Optional zero-copy buffering
Callback function with returned event code
Magic packet detection mode support
Auto negotiation support
Promiscuous mode support
Configuration
Build Time Configurations for r_gmac
The following build time configurations are defined in fsp_cfg/r_ether_cfg.h:
Configuration
Options
Default
Description
Parameter Checking
Default (BSP)
Enabled
Disabled
Default (BSP)
If selected code for parameter checking is included in the build.
Configurations for Networking > Ethernet (r_gmac)
This module can be added to the Stacks tab via New Stack > Networking > Ethernet (r_gmac).
Configuration
Options
Default
Description
General > Name
Name must be a valid C symbol
g_ether0
Module name.
General > Channel
0
0
Select the ether channel number. RZ/TMMMM
General > MAC address 0
Must be a valid MAC address
00:11:22:33:44:55
MAC address 0 of this channel.
General > MAC address 1
Must be a valid MAC address
NULL
MAC address 1 of this channel.
General > MAC address 2
Must be a valid MAC address
NULL
MAC address 2 of this channel.
General > Zero-copy Mode
Disable
Enable
Disable
Enable or disable zero-copy mode.
General > Flow control functionality
Disable
Enable
Disable
Enable or disable flow control.
Filters > Promiscuous Mode
Disable
Enable
Enable
Enable this option to receive packets addressed to other NICs.
Buffers > Number of TX buffer
Must be an integer from 1 to 8
8
Number of transmit buffers
Buffers > Number of RX buffer
Must be an integer from 1 to 8
8
Number of receive buffers
Buffers > Buffer size
Must be at least 1522 bytes (the maximum Ethernet frame size 1514 bytes + ethsw management tag size 8 bytes).
1524
Size of Ethernet buffer
Interrupts > SBD Interrupt priority
MCU Specific Options
Select the Ether GMAC SBD interrupt priority.
Interrupts > PMT Interrupt priority
MCU Specific Options
Select the Ether GMAC PMT interrupt priority.
Interrupts > Callback
Name must be a valid C symbol
NULL
Callback provided when an ISR occurs
Link signal change
Disable
Enable
Disable
Enable or disable callback by PHYLINK change.
Interrupt Configuration
The first R_GMAC_Open function call sets SDB and PMT interrupts. The user could provide callback function which would be invoked when SDB and PMT interrupt handler has been completed. The callback arguments will contain information about a channel number, the GMAC status, the event code, and a pointer to the user defined context.
Callback Configuration
The user could provide callback function which would be invoked when either a magic packet or a link signal change is detected. When the callback function is called, a variable in which the channel number for which the detection occurred and a constant for event code are stored is passed as an argument. If the value of this argument is to be used outside the callback function, its value should be copied into, for example, a global variable.
Clock Configuration
When using GMAC, Select "PLL1 diver clock" for "Ethernet Clock src".
Usage Notes
Ethernet Frame Format
The Ethernet module supports the Ethernet II/IEEE 802.3 frame format.
Frame Format for Data Transmission and Reception
Frame Format Image
The preamble and SFD signal the start of an Ethernet frame. The FCS contains the CRC of the Ethernet frame and is calculated on the transmitting side. When data is received the CRC value of the frame is calculated in hardware, and the Ethernet frame is discarded if the values do not match. When the hardware determines that the data is normal, the valid range of receive data is: (transmission destination address) + (transmission source address) + (length/type) + (data).
Managemt Port Specific Frame Format Image
The Ethernet frame have extended managemt port specific frame tag when management port specfic tag enable in Ether Switch configuration. By managemt port specific frame tag, It can select the external ports for transmission frame or obtain the external port for reception frame. Note that Ether Switch removes managemt port specific frame tag when sending to the external ports, and adds managemt port specific frame tag when receiving from the external port.
PAUSE Frame Format
Pause Frame Format Image
The transmission destination address is specified as 01:80:C2:00:00:01 (a multicast address reserved for PAUSE frames). At the start of the payload the length/type is specified as 0x8808 and the operation code as 0x0001. The pause duration in the payload is specified by the value of the automatic PAUSE (AP) bits in the automatic PAUSE frame setting register (APR), or the manual PAUSE time setting (MP) bits in the manual PAUSE frame setting register (MPR).
Magic Packet Frame Format
Magic Packet Frame Format Image
In a Magic Packet, the value FF:FF:FF:FF:FF:FF followed by the transmission destination address repeated 16 times is inserted somewhere in the Ethernet frame data.
Limitations
Memory alignment limitation for Ethernet buffer
The Ethernet Driver has several alignment constraints:
16-byte alignment for the descriptor
32-byte aligned write buffer for R_GMAC_Write when zero copy mode is enabled
After ETHERC, EDMAC and PHY-LSI are reset in software, an auto negotiation of PHY-LSI is begun. Afterwards, the link signal change interrupt is permitted. Implements ether_api_t::open.
Return values
FSP_SUCCESS
Channel opened successfully.
FSP_ERR_ASSERTION
Pointer to ETHER control block or configuration structure is NULL.
FSP_ERR_ALREADY_OPEN
Control block has already been opened or channel is being used by another instance. Call close() then open() to reconfigure.
Receive Ethernet frame. Receives data to the location specified by the pointer to the receive buffer. In zero copy mode, the address of the receive buffer is returned. In non zero copy mode, the received data in the internal buffer is copied to the pointer passed by the argument. Implements ether_api_t::read.
Return values
FSP_SUCCESS
Processing completed successfully.
FSP_ERR_ASSERTION
Pointer to ETHER control block is NULL.
FSP_ERR_NOT_OPEN
The control block has not been opened.
FSP_ERR_ETHER_ERROR_NO_DATA
There is no data in receive buffer.
FSP_ERR_ETHER_ERROR_LINK
Auto-negotiation is not completed, and reception is not enabled.
FSP_ERR_ETHER_ERROR_MAGIC_PACKET_MODE
As a Magic Packet is being detected, transmission and reception is not enabled.
Transmit Ethernet frame. Transmits data from the location specified by the pointer to the transmit buffer, with the data size equal to the specified frame length. In the non zero copy mode, transmits data after being copied to the internal buffer. Implements ether_api_t::write.
Return values
FSP_SUCCESS
Processing completed successfully.
FSP_ERR_ASSERTION
Pointer to ETHER control block is NULL.
FSP_ERR_NOT_OPEN
The control block has not been opened.
FSP_ERR_ETHER_ERROR_LINK
Auto-negotiation is not completed, and reception is not enabled.
FSP_ERR_ETHER_ERROR_MAGIC_PACKET_MODE
As a Magic Packet is being detected, transmission and reception is not enabled.