Priority Flow Control Requirement - 9.0 English

Tri-Mode Ethernet MAC LogiCORE IP Product Guide (PG051)

Document ID
Release Date
9.0 English

As described in Flow Control Using IEEE 802.3, the basic requirement for flow control is to avoid dropping frames if a receiving port cannot process frames at the rate at which they are being provided. IEEE 802.3 pause frames operate on the entire link, which is not ideal when there are multiple priority queues awaiting transmission with each queue originating from a separate FIFO. In this case, the transmission of one or more specific queues (up to eight) can be inhibited using priority-based flow control with the eight frame priorities as defined by IEEE 802.1p. The following figure illustrates an implementation of two different priority queues.

Figure 1. Priority Flow Control Requirement

A MAC can transmit a PFC frame to request that its link partner cease transmission of one or more of the eight frame priority queues for a defined period of time. For example, the Ethernet MAC at the left side of the previous figure can initiate a PFC request if its RX priority 0 FIFO reaches a nearly full state, this is considered to be an XOFF request. To make this request, the RX Priority 0 FIFO drives the tx_pfc_p0_tvalid signal High, and holds it High until it is ready to accept data again (this is one of the modes of operation supported by the MAC). If this FIFO remains nearly full for an extended period of time, the Ethernet MAC automatically generates a new PFC request to prevent the link partner from restarting transmission of this frame class when the initially requested duration (the original requested number of pause quanta) has expired. When the FIFO level drops to a specified level and the FIFO is able to accept data again, the requirement to inhibit transmission of that frame class can be removed by driving the tx_pfc_p0_tvalid signal Low.

Now, the Ethernet MAC core can be optionally configured to generate a PFC frame to cancel any remaining pause quanta (duration) by placing a zero pause quanta value into the PFC frame for priority 0, this is considered to be an XON request.

When the Ethernet MAC core receives priority-based flow control frames it cannot directly cease transmission of the specified priority (or priorities) without ceasing transmission of all frames. To enable specific priorities to be paused the MAC has a per-priority pause request output which can be asserted to inhibit transmission of specific priorities. For example, the Ethernet MAC at the right side of the previous figure might cease transmission from its TX priority 0 FIFO queue after receiving the PFC frame transmitted by the left-hand MAC. In a well-designed system, the right side MAC would cease transmission before the RX priority 0 FIFO of the left side MAC overflowed. This provides time for the FIFO to be emptied to a safe level before normal operation resumes and safeguards the system against FIFO overflow conditions and frame loss.