Hard Processor System Technical Reference Manual: Agilex™ 5 SoCs

ID 814346
Date 11/27/2024
Public
Document Table of Contents

5.1.6.8.2. Receive Flow Control

In the receive path, the flow control is functional only in full-duplex mode. If pause packet is received in half-duplex mode, the packet is considered as a normal control packet.

In configurations with multiple queues, you can enable the PFC packet detection by setting the PFCE bit in the MAC_Rx_Flow_Ctrl register. If PFC packet detection is enabled, the MTL TX queue(s) corresponding to the received priority is blocked when the PFC packet is received. If PFC packet detection is not enabled in configurations with multiple queues and RFE bit is enabled, the MAC transmitter is blocked when the 802.3x-2018 pause packet is received.

The following steps describes the RX flow control:

  1. The MAC checks the destination address of the received pause packet for either of the following:
    • Multicast destination address: The DA matches the unique multicast address specified for the control packet (48'h0180C2000001).
    • Unicast destination address: The DA matches the content of the MAC_Address0 register and the UP bit of the MAC_Rx_Flow_Ctrl register is set. If the UP bit is set, the MAC processes pause packets with unicast destination address in addition to the unique multicast address.
  2. The MAC decodes the following fields of the received packet:
    • Type field: This field is checked for 16'h8808.
    • Opcode field: This field is checked for 16'h0001 (pause packet) or 16'h0101 (PFC packet).
    • Pause Time or Pause Time Vector field: The pause time (for pause packet) is captured to determine the time for which transmitter needs to be blocked. The pause time vector field (for PFC packet) is captured to determine the time for which the MTL TX queue corresponding to the received priority needs to be blocked.
    • Priority Enable Vector field: This field is valid only for PFC packets. It is captured to determine the MTL TX queue to be paused for the received priority.
  3. If the byte count of the status indicates 64 bytes and there is no CRC error, the MAC transmitter does one of the following:
    • For 802.3x-2018 Pause packets, the MAC pauses the transmission of any data packet for the duration of the decoded pause time value multiplied by the slot time (64 byte times).
    • For PFC packets, the MAC blocks the TX queues corresponding to the priority in EMAC configurations, the MAC receiver starts the pause timer corresponding to the active priorities indicated in the PEV field, with the respective PT[n] values. The mti_disable_prty_o signal bits is driven high for the respective pause times.
    • When the PFC pause is activated for a specific priority, all the traffic classes having that priority associated with it, get paused by the scheduler. As a result, all the TX queues mapped to those traffic classes get paused.
    • In addition to the PFC-based flow control operation, when the PFCE bit is set, all bits of the mti_disable_prty_o signal are asserted when the MAC transmitter is in LPI mode so that the ETS scheduler start over again after exiting the LPI mode.
  4. The MAC transfers the received control packet to the application based on the setting of the PCF field in the MAC_Packet_Filter register.
  5. If subsequent pause or PFC packets are received before the earlier pause time expires, the MAC updates the pause timer with the new value.
  6. In the case of VXLAn/NVGRE tunneled packet this feature is supported only for the outer packet as this is a L3 link protocol.

RX Path Flow Control Registers

The flow control in the Rx path based on the setting of the following bit:
  • RFE bit of the MAC_Rx_Flow_Ctrl register
Table 161.  Flow Control in RX Path
RFE Description
0 The MAC receiver does not detect the received pause packets.
1 The MAC receiver detects or processes the pause packets and responds to such packets by stopping the MAC transmitter.