Flow Control
BCM5718 Programmer’s Guide
Broadcom
®
January 29, 2016 • 5718-PG108-R
Page 223
Flow Control
Description
The Ethernet controller supports IEEE 802.3x flow control. Flow control is a switched Ethernet capability, where
link partners may pause traffic. The 802.3x flow control specifies that a MAC sublayer may transmit pause
frames. The pause frames instruct the MAC’s link partner to wait a specified amount of time, before sending
additional frames. This delay provides the MAC time to free packet buffers. Conversely, the MAC sublayer must
also accept/receive pause frames. Flow control is used by switches and bridges to prevent clients of dissimilar
speeds from exhausting switching packet buffers. Clients and servers may use flow control for similar reasons.
A very important requirement is that both link partners must share a full-duplex connection for flow control to be
enabled. IEEE 802.3x flow control does not operate on a half-duplex connection. More information on flow
control can be found in
Appendix A: “Flow Control,” on page 574
.
The following architectural blocks are integral to flow control:
• Transmit MAC
• Receive MAC
• Statistics Block
• PHY Auto-negotiation
• PHY Auto-Advertise
Operational Characteristics
The Ethernet controller implements pause functionality using Xon and Xoff states. The MAC will extract a pause
quantum from a pause control frame. Then, the MAC will configure its internal timer with the pause_time
specified by the link partner. Frames that are currently in the transmit engine will be completed before the
transmit engine is inhibited. The MAC has moved flow control into a Xoff state once the transmit engine is
inhibited. Note that the transmit engine is not completely disabled since the IEEE 802.3 specification stipulates
that MAC control frames should not be paused.
One of the following conditions moves the Ethernet controller into an Xon state:
• Link partner sends a pause frame with pause_time = 0.
• Internal pause timer expires.
Transmit MAC
The transmit MAC is responsible for sending flow control frames. Software enables the transmit MAC to send
flow control frames by setting the Enable_Flow_Control bit in the Transmit_MAC_Mode register (see
MAC Mode Register (offset: 0x45C)” on page 319
). When software clears the Enable_Flow_Control bit, the
transmit MAC will not generate flow control frames. The MAC_RX_MBUF_Low_Water_Mark register value
triggers PAUSE frames to be transmitted when a threshold value is passed. Software may alter the watermark
to tune system performance.