RZ Flexible Software Package Documentation  Release v4.2.0

 
Ethernet (r_rmac)

Functions

fsp_err_t R_RMAC_Open (ether_ctrl_t *const p_ctrl, ether_cfg_t const *const p_cfg)
 After RMAC, Switch 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. More...
 
fsp_err_t R_RMAC_Close (ether_ctrl_t *const p_ctrl)
 Disables interrupts. Removes power and releases hardware lock. Implements ether_api_t::close. More...
 
fsp_err_t R_RMAC_BufferRelease (ether_ctrl_t *const p_ctrl)
 Move to the next buffer in the receive buffer list. Implements ether_api_t::bufferRelease. More...
 
fsp_err_t R_RMAC_RxBufferUpdate (ether_ctrl_t *const p_ctrl, void *const p_buffer)
 Change the buffer pointer of the current rx buffer descriptor. Implements ether_api_t::rxBufferUpdate. More...
 
fsp_err_t R_RMAC_LinkProcess (ether_ctrl_t *const p_ctrl)
 The Link up processing, the Link down processing, and the magic packet detection processing are executed. Implements ether_api_t::linkProcess. More...
 
fsp_err_t R_RMAC_WakeOnLANEnable (ether_ctrl_t *const p_ctrl)
 The setting of RMAC is changed from normal sending and receiving mode to magic packet detection mode. Implements ether_api_t::wakeOnLANEnable. More...
 
fsp_err_t R_RMAC_Read (ether_ctrl_t *const p_ctrl, void *const p_buffer, uint32_t *const length_bytes)
 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. More...
 
fsp_err_t R_RMAC_Write (ether_ctrl_t *const p_ctrl, void *const p_buffer, uint32_t const frame_length)
 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. More...
 
fsp_err_t R_RMAC_TxStatusGet (ether_ctrl_t *const p_ctrl, void *const p_buffer_address)
 
fsp_err_t R_RMAC_CallbackSet (ether_ctrl_t *const p_ctrl, void(*p_callback)(ether_callback_args_t *), void *const p_context, ether_callback_args_t *const p_callback_memory)
 
fsp_err_t R_RMAC_SetWriteConfig (ether_ctrl_t *const p_ctrl, rmac_write_cfg_t *const p_write_cfg)
 Set configuration for tx frame. This API must call before ether_api_t::write. More...
 
fsp_err_t R_RMAC_GetTxTimestamp (ether_ctrl_t *const p_ctrl, rmac_timestamp_t *const p_timestamp)
 Get timestamp of transmitted frame. This API must call after ether_api_t::write. More...
 
fsp_err_t R_RMAC_GetRxTimestamp (ether_ctrl_t *const p_ctrl, rmac_timestamp_t *const p_timestamp)
 Get timestamp of received frame. This API must call before ether_api_t::read. More...
 

Detailed Description

Driver for the Ethernet peripheral on RZ microprocessor. This module implements the Ethernet Interface.

Overview

With the Ethernet MAC function, this LSI enables to transport the Ethernet Data on PORT.

Features

Configuration

Build Time Configurations for r_rmac

The following build time configurations are defined in fsp_cfg/r_rmac_cfg.h:

ConfigurationOptionsDefaultDescription
Parameter Checking
  • Default (BSP)
  • Enabled
  • Disabled
Default (BSP) If selected code for parameter checking is included in the build.
Read Buffer Size Checking
  • Enabled
  • Disabled
Disabled If selected code for buffer size checking is included in the build.
Nested Interrupt (Multiplex Interrupt)
  • Enabled
  • Disabled
Disabled Enable nested interrupt for a single driver.

Configurations for Networking > Ethernet MAC (r_rmac)

This module can be added to the Stacks tab via New Stack > Networking > Ethernet MAC (r_rmac).

ConfigurationOptionsDefaultDescription
General > NameName must be a valid C symbolg_rmac0 Module name.
General > ChannelMust be an integer greater than or equal to 0.0 Write the ether channel number.
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.
General > MAC addressMust be a valid MAC address00:11:22:33:44:55 MAC address of this channel.
Filters > Multicast Mode
  • Disable
  • Enable
Enable Enable or disable multicast frame reception.
Filters > Promiscuous Mode
  • Disable
  • Enable
Disable Enable this option to receive packets addressed to other NICs.
Filters > Broadcast filterMust be a valid non-negative integer with maximum configurable value of 65535. 0 Limit of the number of broadcast frames received continuously
Buffers > Padding sizeDisableDisable The padding size that is automatically inserted into the received packets
Buffers > Padding offsetMust be less than 64 bytes.0 The offset into a receive buffer to insert padding bytes.
Buffers > TX queue lengthValue must be an integer3 Number of buffers per TX queue.
Buffers > RX queue lengthValue must be an integer3 Number of buffers per RX queue.
Buffers > TX queue numValue must be an integer2 TX queue num
Buffers > RX queue numValue must be an integer2 RX queue num
Buffers > Number of TX bufferValue must be an integer12 Number of transmit buffers
Buffers > Number of RX bufferValue must be an integer12 Number of receive buffers
Buffers > Buffer sizeMust be at least 1514 which is the maximum Ethernet frame size.1514 Size of Ethernet buffer
Buffers > Allocate RX buffer
  • Disable
  • Enable
Enable Allocates the RX buffer when generating the configuration structure
Buffers > Number of node numValue must be an integer24 Number of receive buffers
Interrupts > ETHA status interrupt priorityMCU Specific OptionsSelect the ETHA status interrupt priority.
Interrupts > CallbackName must be a valid C symbolNULL Callback provided when an ISR occurs
Timestamp > TS queue lengthValue must be an integer8 Timestamp queue length.
Frame Preemption > Frame preemption feature
  • Disable
  • Enable
Disable Select whether to enable or disable frame preemption feature.
Frame Preemption > Verify frame intervalValue must be a non-negative integer less than 12810 Interval for sending verify frame [ms].
Forwarding > Transmission descriptor format
  • Transmission ethernet descriptor
  • Transmission direct descriptor
Transmission direct descriptor The transmission direct descriptor could be used, for example, for non-routable protocol forwarding (network control) or for CPU-CPU communication and the transmission ethernet descriptor could be used for all normal ethernet transmissions.
Forwarding > Port based forwarding for reception
  • Enabled
  • Disabled
Disabled Port based forwarding function forwards all frames from a port to other ones when receiving.

Usage Notes

Then use this modules, set the MUX to port, then start transportation.

Limitations

None

Examples

RMAC Basic Example

This is a basic example of minimal use of the RMAC in an application.

Note
In this example zero-copy mode is disabled and there are no restrictions on buffer alignment.
#define RMAC_EXAMPLE_MAXIMUM_ETHERNET_FRAME_SIZE (1514)
#define RMAC_EXAMPLE_TRANSMIT_ETHERNET_FRAME_SIZE (60)
#define RMAC_EXAMPLE_SOURCE_MAC_ADDRESS 0x74, 0x90, 0x50, 0x00, 0x79, 0x01
#define RMAC_EXAMPLE_DESTINATION_MAC_ADDRESS 0x74, 0x90, 0x50, 0x00, 0x79, 0x02
#define RMAC_EXAMPLE_FRAME_TYPE 0x00, 0x2E
#define RMAC_EXAMPLE_PAYLOAD 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, \
/* Receive data buffer */
static uint8_t gp_read_buffer[RMAC_EXAMPLE_MAXIMUM_ETHERNET_FRAME_SIZE] = {0};
/* Transmit data buffer */
static uint8_t gp_send_data[RMAC_EXAMPLE_TRANSMIT_ETHERNET_FRAME_SIZE] =
{
RMAC_EXAMPLE_DESTINATION_MAC_ADDRESS, /* Destination MAC address */
RMAC_EXAMPLE_SOURCE_MAC_ADDRESS, /* Source MAC address */
RMAC_EXAMPLE_FRAME_TYPE, /* Type field */
RMAC_EXAMPLE_PAYLOAD /* Payload value (46byte) */
};
void rmac_basic_example (void)
{
fsp_err_t err = FSP_SUCCESS;
uint32_t read_data_size = 0;
/* Open the rmac instance with initial configuration. */
err = R_RMAC_Open(&g_rmac0_ctrl, &g_rmac0_cfg);
/* Handle any errors. This function should be defined by the user. */
assert(FSP_SUCCESS == err);
do
{
/* When the Ethernet link status read from the PHY-LSI Basic Status register is link-up,
* Initializes the module and make auto negotiation. */
err = R_RMAC_LinkProcess(&g_rmac0_ctrl);
} while (FSP_SUCCESS != err);
/* Transmission is non-blocking. */
/* User data copy to internal buffer and is transferred by DMA in the background. */
err = R_RMAC_Write(&g_rmac0_ctrl, (void *) gp_send_data, sizeof(gp_send_data));
assert(FSP_SUCCESS == err);
/* Received data copy to user buffer from internal buffer. */
err = R_RMAC_Read(&g_rmac0_ctrl, (void *) gp_read_buffer, &read_data_size);
assert(FSP_SUCCESS == err);
/* Disable transmission and receive function and close the rmac instance. */
R_RMAC_Close(&g_rmac0_ctrl);
}

Timestamp Example

This is a example of getting transmission and reception timestamps.

void rmac_timestamp_example (void)
{
fsp_err_t err = FSP_SUCCESS;
uint32_t read_data_size = 0;
rmac_timestamp_t rx_timestamp;
rmac_timestamp_t tx_timestamp;
/* Open the rmac instance with initial configuration. */
err = R_RMAC_Open(&g_rmac0_ctrl, &g_rmac0_cfg);
/* Handle any errors. This function should be defined by the user. */
assert(FSP_SUCCESS == err);
do
{
/* When the Ethernet link status read from the PHY-LSI Basic Status register is link-up,
* Initializes the module and make auto negotiation. */
err = R_RMAC_LinkProcess(&g_rmac0_ctrl);
} while (FSP_SUCCESS != err);
/* Set write configuration. */
err = R_RMAC_SetWriteConfig(&g_rmac0_ctrl, &write_cfg);
assert(FSP_SUCCESS == err);
/* Transmission is non-blocking. */
/* User data copy to internal buffer and is transferred by DMA in the background. */
err = R_RMAC_Write(&g_rmac0_ctrl, (void *) gp_send_data, sizeof(gp_send_data));
assert(FSP_SUCCESS == err);
/* Get TX timestamp value. */
err = R_RMAC_GetTxTimestamp(&g_rmac0_ctrl, &tx_timestamp);
assert(FSP_SUCCESS == err);
/* Get RX timestamp value. */
err = R_RMAC_GetRxTimestamp(&g_rmac0_ctrl, &rx_timestamp);
assert(FSP_SUCCESS == err);
/* Received data copy to user buffer from internal buffer. */
err = R_RMAC_Read(&g_rmac0_ctrl, (void *) gp_read_buffer, &read_data_size);
assert(FSP_SUCCESS == err);
/* Disable transmission and receive function and close the rmac instance. */
R_RMAC_Close(&g_rmac0_ctrl);
}

Classes

struct  st_rmac_queue_info
 
struct  st_rmac_write_cfg
 
struct  st_rmac_timestamp
 
struct  st_rmac_buffer_node
 
struct  st_rmac_buffer_queue
 
struct  st_rmac_instance_ctrl
 

Typedefs

typedef struct st_rmac_queue_info rmac_queue_info_t
 
typedef struct st_rmac_write_cfg rmac_write_cfg_t
 
typedef struct st_rmac_timestamp rmac_timestamp_t
 
typedef struct st_rmac_buffer_node rmac_buffer_node_t
 
typedef struct st_rmac_buffer_queue rmac_buffer_queue_t
 
typedef struct st_rmac_extended_cfg rmac_extended_cfg_t
 
typedef struct st_rmac_instance_ctrl rmac_instance_ctrl_t
 

Enumerations

enum  ether_previous_link_status_t
 
enum  ether_link_change_t
 
enum  ether_link_establish_status_t
 
enum  rmac_transmission_discriptor_format_t
 

Class Documentation

◆ RZT::st_rmac_queue_info

struct RZT::st_rmac_queue_info

Information of a descriptor queue.

Class Members
layer3_switch_descriptor_queue_cfg_t queue_cfg Queue configuration.
uint32_t index Queue index.

◆ RZT::st_rmac_write_cfg

struct RZT::st_rmac_write_cfg

Write configuration.

Class Members
uint32_t tx_timestamp_enable: 1 Enable to get TX timestamp.
uint32_t reserved: 31 Reserved.

◆ RZT::st_rmac_timestamp

struct RZT::st_rmac_timestamp

Timestamp.

Class Members
uint16_t sec_upper Timestamp second (Upper 16 bit).
uint32_t sec_lower Timestamp second (Lower 32 bit).
uint32_t ns Timestamp nanosecond.

◆ RZT::st_rmac_buffer_node

struct RZT::st_rmac_buffer_node

Node to manage buffer.

Class Members
void * p_buffer Pointer to the buffer.
uint32_t size Buffer size.
struct st_rmac_buffer_node * p_next Pointer to the next node.

◆ RZT::st_rmac_buffer_queue

struct RZT::st_rmac_buffer_queue

Queue of internal buffers.

Class Members
rmac_buffer_node_t * p_head Pointer to the head of the queue.
rmac_buffer_node_t * p_tail Pointer to the tail of the queue.

◆ RZT::st_rmac_instance_ctrl

struct RZT::st_rmac_instance_ctrl

Instance control block. DO NOT INITIALIZE. Initialization occurs when ether_api_t::open is called

Public Attributes

uint32_t read_queue_index
 RX queue that used for next BufferRelease API.
 
uint32_t rx_running_queue_index
 Whether a RX queue is running or not.
 
rmac_buffer_queue_t rx_completed_buffer_queue
 RX buffers that have completed reception.
 
rmac_buffer_queue_t rx_unreleased_buffer_queue
 RX buffers that have been read but not yet released.
 
rmac_buffer_queue_t rx_empty_buffer_queue
 RX Buffers that have no data.
 
uint32_t rx_initialized_buffer_num
 RX buffer num of initialized. This is used in RxBufferUpdate API.
 
uint32_t write_queue_index
 TX queue that used for next Write API.
 
uint32_t tx_running_queue_index
 Index of the queue that is running now.
 
void * p_last_sent_buffer
 Pointer to the last sent TX buffer.
 
rmac_buffer_queue_t tx_pending_buffer_queue
 Delayed TX buffers.
 
rmac_buffer_queue_t tx_empty_buffer_queue
 TX Buffers that have no data.
 
uint32_t write_descriptor_count
 Count of descriptor that already write in active queue.
 
rmac_buffer_queue_t buffer_node_pool
 Buffer nodes pool.
 
rmac_timestamp_t * p_rx_timestamp
 RX timestamp pointer.
 
rmac_timestamp_t tx_timestamp
 TX timestamp.
 
uint32_t tx_timestamp_seq_num
 Sequence number of TX timestamp.
 
rmac_write_cfg_t write_cfg
 Configuration of transmission.
 
bool frame_preemption_available
 Status of the frame preemption verification.
 
ether_previous_link_status_t previous_link_status
 Previous link status.
 
ether_link_change_t link_change
 Status of link change.
 
ether_link_establish_status_t link_establish_status
 Current Link status.
 
ether_wake_on_lan_t wake_on_lan
 Wake on LAN mode.
 

Typedef Documentation

◆ rmac_queue_info_t

Information of a descriptor queue. Please refer to the struct st_rmac_queue_info.

◆ rmac_write_cfg_t

Write configuration. Please refer to the struct st_rmac_write_cfg.

◆ rmac_timestamp_t

Timestamp. Please refer to the struct st_rmac_timestamp.

◆ rmac_buffer_node_t

Node to manage buffer. Please refer to the struct st_rmac_buffer_node.

◆ rmac_buffer_queue_t

Queue of internal buffers. Please refer to the struct st_rmac_buffer_queue.

◆ rmac_extended_cfg_t

typedef struct st_rmac_extended_cfg rmac_extended_cfg_t

Extended configuration. Please refer to the struct st_rmac_extended_cfg.

◆ rmac_instance_ctrl_t

Instance control block. DO NOT INITIALIZE. Initialization occurs when open is called Please refer to the struct st_rmac_instance_ctrl.

Enumeration Type Documentation

◆ ether_previous_link_status_t

Enumerator
ETHER_PREVIOUS_LINK_STATUS_DOWN 

Previous link status is down.

ETHER_PREVIOUS_LINK_STATUS_UP 

Previous link status is up.

◆ ether_link_change_t

Enumerator
ETHER_LINK_CHANGE_NO_CHANGE 

Link status is no change.

ETHER_LINK_CHANGE_LINK_DOWN 

Link status changes to down.

ETHER_LINK_CHANGE_LINK_UP 

Link status changes to up.

◆ ether_link_establish_status_t

Enumerator
ETHER_LINK_ESTABLISH_STATUS_DOWN 

Link establish status is down.

ETHER_LINK_ESTABLISH_STATUS_UP 

Link establish status is up.

◆ rmac_transmission_discriptor_format_t

Transmission descriptor format.

Enumerator
RMAC_TRANSMISSION_DESCRIPTOR_FORMAT_ETHERNET 

Use ethernet descriptor.

RMAC_TRANSMISSION_DESCRIPTOR_FORMAT_DIRECT 

Use direct descriptor.

Function Documentation

◆ R_RMAC_Open()

fsp_err_t R_RMAC_Open ( ether_ctrl_t *const  p_ctrl,
ether_cfg_t const *const  p_cfg 
)

After RMAC, Switch 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.

Initializes the ether module and applies configurations. Implements ether_api_t::open.

Return values
FSP_SUCCESSChannel opened successfully.
FSP_ERR_ASSERTIONPointer to ETHER control block or configuration structure is NULL.
FSP_ERR_ALREADY_OPENControl block has already been opened or channel is being used by another instance. Call close() then open() to reconfigure.
FSP_ERR_ETHER_ERROR_PHY_COMMUNICATIONInitialization of PHY-LSI failed.
FSP_ERR_INVALID_CHANNELInvalid channel number is given.
FSP_ERR_INVALID_POINTERPointer to extend config structure or MAC address is NULL.
FSP_ERR_INVALID_ARGUMENTInterrupt is not enabled.
FSP_ERR_ETHER_PHY_ERROR_LINKInitialization of PHY-LSI failed.

◆ R_RMAC_Close()

fsp_err_t R_RMAC_Close ( ether_ctrl_t *const  p_ctrl)

Disables interrupts. Removes power and releases hardware lock. Implements ether_api_t::close.

Return values
FSP_SUCCESSChannel successfully closed.
FSP_ERR_ASSERTIONPointer to ETHER control block is NULL.
FSP_ERR_NOT_OPENThe control block has not been opened

◆ R_RMAC_BufferRelease()

fsp_err_t R_RMAC_BufferRelease ( ether_ctrl_t *const  p_ctrl)

Move to the next buffer in the receive buffer list. Implements ether_api_t::bufferRelease.

Return values
FSP_SUCCESSProcessing completed successfully.
FSP_ERR_ASSERTIONPointer to ETHER control block or internal buffers is NULL.
FSP_ERR_NOT_OPENThe control block has not been opened
FSP_ERR_ETHER_ERROR_LINKAuto-negotiation is not completed, and reception is not enabled.
FSP_ERR_BUFFER_EMPTYThere is no available internal RX buffer.

◆ R_RMAC_RxBufferUpdate()

fsp_err_t R_RMAC_RxBufferUpdate ( ether_ctrl_t *const  p_ctrl,
void *const  p_buffer 
)

Change the buffer pointer of the current rx buffer descriptor. Implements ether_api_t::rxBufferUpdate.

Return values
FSP_SUCCESSProcessing completed successfully.
FSP_ERR_ASSERTIONA pointer argument is NULL.
FSP_ERR_NOT_OPENThe control block has not been opened.
FSP_ERR_INVALID_POINTERThe pointer of buffer is NULL or not aligned on a 32-bit boundary.
FSP_ERR_INVALID_MODEDriver is configured to non zero copy mode.
FSP_ERR_BUFFER_EMPTYThere is no available internal RX buffer.

◆ R_RMAC_LinkProcess()

fsp_err_t R_RMAC_LinkProcess ( ether_ctrl_t *const  p_ctrl)

The Link up processing, the Link down processing, and the magic packet detection processing are executed. Implements ether_api_t::linkProcess.

Return values
FSP_SUCCESSLink is up.
FSP_ERR_ASSERTIONPointer to ETHER control block is NULL.
FSP_ERR_NOT_OPENThe control block has not been opened.
FSP_ERR_ETHER_ERROR_LINKLink is down.
FSP_ERR_ETHER_ERROR_PHY_COMMUNICATIONWhen reopening the PHY interface initialization of the PHY-LSI failed.
FSP_ERR_ALREADY_OPENWhen reopening the PHY interface it was already opened.
FSP_ERR_INVALID_CHANNELWhen reopening the PHY interface an invalid channel was passed.
FSP_ERR_INVALID_POINTERWhen reopening the PHY interface the MAC address pointer was NULL.
FSP_ERR_INVALID_ARGUMENTWhen reopening the PHY interface the interrupt was not enabled.
FSP_ERR_ETHER_PHY_ERROR_LINKInitialization of the PHY-LSI failed.

◆ R_RMAC_WakeOnLANEnable()

fsp_err_t R_RMAC_WakeOnLANEnable ( ether_ctrl_t *const  p_ctrl)

The setting of RMAC is changed from normal sending and receiving mode to magic packet detection mode. Implements ether_api_t::wakeOnLANEnable.

Return values
FSP_SUCCESSProcessing completed successfully.
FSP_ERR_ASSERTIONPointer to ETHER control block is NULL.
FSP_ERR_NOT_OPENThe control block has not been opened.
FSP_ERR_ETHER_ERROR_LINKAuto-negotiation is not completed, and reception is not enabled.
FSP_ERR_ETHER_PHY_ERROR_LINKInitialization of PHY-LSI failed.

◆ R_RMAC_Read()

fsp_err_t R_RMAC_Read ( ether_ctrl_t *const  p_ctrl,
void *const  p_buffer,
uint32_t *const  length_bytes 
)

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_SUCCESSProcessing completed successfully.
FSP_ERR_ASSERTIONPointer to ETHER control block is NULL.
FSP_ERR_NOT_OPENThe control block has not been opened.
FSP_ERR_ETHER_ERROR_NO_DATAThere is no data in receive buffer.
FSP_ERR_ETHER_ERROR_LINKAuto-negotiation is not completed, and reception is not enabled.
FSP_ERR_ETHER_ERROR_FILTERINGMulticast Frame filter is enable, and Multicast Address Frame is received.
FSP_ERR_INVALID_POINTERValue of the pointer is NULL.
FSP_ERR_BUFFER_EMPTYThere is no available internal RX buffer.
FSP_ERR_INVALID_SIZEThe buffer size is smaller than ether_cfg_t::ether_buffer_size.

◆ R_RMAC_Write()

fsp_err_t R_RMAC_Write ( ether_ctrl_t *const  p_ctrl,
void *const  p_buffer,
uint32_t const  frame_length 
)

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_SUCCESSProcessing completed successfully.
FSP_ERR_ASSERTIONPointer to ETHER control block is NULL.
FSP_ERR_NOT_OPENThe control block has not been opened.
FSP_ERR_ETHER_ERROR_LINKAuto-negotiation is not completed, and reception is not enabled.
FSP_ERR_ETHER_ERROR_TRANSMIT_BUFFER_FULLTransmit buffer is not empty.
FSP_ERR_INVALID_POINTERValue of the pointer is NULL.
FSP_ERR_INVALID_ARGUMENTValue of the send frame size is out of range.
FSP_ERR_BUFFER_EMPTYThere is no available internal TX buffer.

◆ R_RMAC_TxStatusGet()

fsp_err_t R_RMAC_TxStatusGet ( ether_ctrl_t *const  p_ctrl,
void *const  p_buffer_address 
)

Provides status of Ethernet driver in the user provided pointer. Implements ether_api_t::txStatusGet.

Return values
FSP_SUCCESSTransmit buffer address is stored in provided p_buffer_address.
FSP_ERR_ASSERTIONPointer to ETHER control block is NULL.
FSP_ERR_NOT_OPENThe control block has not been opened.
FSP_ERR_INVALID_POINTERp_status is NULL.
FSP_ERR_NOT_FOUNDTransmit buffer address has been overwritten in transmit descriptor.

◆ R_RMAC_CallbackSet()

fsp_err_t R_RMAC_CallbackSet ( ether_ctrl_t *const  p_ctrl,
void(*)(ether_callback_args_t *)  p_callback,
void *const  p_context,
ether_callback_args_t *const  p_callback_memory 
)

Updates the user callback with the option to provide memory for the callback argument structure. Implements ether_api_t::callbackSet.

Return values
FSP_SUCCESSCallback updated successfully.
FSP_ERR_ASSERTIONA required pointer is NULL.
FSP_ERR_NOT_OPENThe control block has not been opened.
FSP_ERR_NO_CALLBACK_MEMORYp_callback is non-secure and p_callback_memory is either secure or NULL.

◆ R_RMAC_SetWriteConfig()

fsp_err_t R_RMAC_SetWriteConfig ( ether_ctrl_t *const  p_ctrl,
rmac_write_cfg_t *const  p_write_cfg 
)

Set configuration for tx frame. This API must call before ether_api_t::write.

Return values
FSP_SUCCESSProcessing completed successfully.
FSP_ERR_ASSERTIONA pointer argument is NULL.
FSP_ERR_NOT_OPENThe control block has not been opened.

◆ R_RMAC_GetTxTimestamp()

fsp_err_t R_RMAC_GetTxTimestamp ( ether_ctrl_t *const  p_ctrl,
rmac_timestamp_t *const  p_timestamp 
)

Get timestamp of transmitted frame. This API must call after ether_api_t::write.

Return values
FSP_SUCCESSProcessing completed successfully.
FSP_ERR_ASSERTIONA pointer argument is NULL.
FSP_ERR_NOT_OPENThe control block has not been opened.

◆ R_RMAC_GetRxTimestamp()

fsp_err_t R_RMAC_GetRxTimestamp ( ether_ctrl_t *const  p_ctrl,
rmac_timestamp_t *const  p_timestamp 
)

Get timestamp of received frame. This API must call before ether_api_t::read.

Return values
FSP_SUCCESSProcessing completed successfully.
FSP_ERR_ASSERTIONA pointer argument is NULL.
FSP_ERR_NOT_OPENThe control block has not been opened.