SPRUIU1C July 2020 – February 2024 DRA821U , DRA821U-Q1
IEEE 802.1Qbb based receive flow control provides a means of preventing frame reception when the port is operating in full-duplex mode (FULLDUPLEX bit must be set in the CPSW_PN_MAC_CONTROL_REG_k register). When receive PFC (Priority based Flow Control) flow control is enabled and triggered for a priority, the port will transmit a PFC pause frame to request that the sending station stop transmitting on that prioritiy (and perhaps others) for the period indicated within the transmitted pause frame (FFFFh pause time). When the triggering condition is removed, or when PFC flow control is disabled, the port will transmit a pause frame to cancel the pause request (00.00 pause time). Priority based pause frames can have one to eight priorities enabled as determined by the priority enable vector in the pause frame. Pause frames can give some priorities pause on and others pause off in the same frame. An enabled priority will have either a pause on value (FFFFh) or a pause off value (00.00). Priorities with a zero enable bit in the pause frame priority enable vector are unchanged by the pause frame on the sending station side. The [23-16] RX_FLOW_PRI value in the CPSW_PN_PRI_CTL_REG_k register indicates which port receive priorities are enabled for PFC. The priority enable vector in the pause frame only refers to the priorities that have a valid pause on or pause off sent in the sent pause frame.
The Ethernet port will transmit a pause frame to the reserved multicast address at the first available opportunity (immediately if currently idle, or following the completion of the frame currently being transmitted). The pause frame will contain the maximum possible value for the pause time (FFFFh) on each priority to be paused along with a set priority enable vector bit. The MAC will count the receive pause frame time (decrements FF00h down to 0) and retransmit an outgoing pause frame if the count reaches zero. When the flow control trigger is removed for a specific priority, the MAC will transmit a pause frame with a set priority enable vector bit and a zero pause time on that priority to cancel the pause request.
Note that transmitted pause frames are only a request to the other end station to stop transmitting. Frames that are received during the pause interval will be received normally (provided the Rx FIFO is not full at which time the receive FIFO will overrun and CPSW_STAT_RX_TOP_OF_FIFO_DROP_k[31-0] COUNT value will increment).
Pause frames will be transmitted if enabled and triggered regardless of whether or not the port is observing the pause time period from an incoming pause frame on the priority to be paused or not.
The Ethernet port will transmit pause frames as described below:
All quantities above are hexadecimal and are transmitted most-significant byte first. The least-significant bit is transferred first in each byte.
If RX_FLOW_EN bit in the CPSW_PN_MAC_CONTROL_REG_k is cleared to 0h while the pause time is nonzero, then the pause time will be cleared to zero and a zero count pause frame will be sent. For any priority that has flow control enabled then associated priority in the CPSW_PN_TX_BLKS_PRI_REG_k register should be written with zero.