Functional Description
14.3.2.12.2 Ethernet Port Flow Control
The Ethernet ports have flow control available for transmit and receive. Transmit flow control stops the
Ethernet port from transmitting packets to the wire (switch egress) in response to a received pause frame.
Transmit flow control does not depend on FIFO usage.
The ethernet ports have flow control available for receive operations (packet ingress). Ethernet port
receive flow control is initiated when enabled and triggered. Packets received on an ethernet port can be
sent to the other ethernet port or the CPPI port (or both). Each destination port can trigger the receive
ethernet port flow control. An ethernet destination port triggers another ethernet receive flow control when
the destination port is full.
When a packet is received on an ethernet port interface with enabled flow control the below occurs:
•
The packet will be sent to all ports that currently have room to take the entire packet.
•
The packet will be retried until successful to all ports that indicate they don’t have room for the packet.
The flow control trigger to the CPGMAC_SL will be asserted until the packet has been sent, and there is
room in the logical receive FIFO for packet runout from another flow control trigger (rx_pkt_cnt = 0).
Ethernet port receive flow control is disabled by default on reset. Ethernet port receive flow control
requires that the rx_flow_en bit in the associated CPGMAC_SL be set to one.
When receive flow control is enabled on a port, the port’s associated FIFO block allocation must be
adjusted. The port RX allocation must increase from the default three blocks to accommodate the flow
control runout. A corresponding decrease in the TX block allocation is required. If a sending port ignores a
pause frame then packets may overrun on receive (and be dropped) but will not be dropped on transmit. If
flow control is disabled for gmii ports, then any packets that are dropped are dropped on transmit and not
on receive.
14.3.2.12.2.1 Receive Flow Control
When enabled and triggered, receive flow control is initiated to limit the CPGMAC_SL from further frame
reception. Half-duplex mode receive flow control is collision based while full duplex mode issues 802.3X
pause frames. In either case, receive flow control prevents frame reception by issuing the flow control
appropriate for the current mode of operation. Receive flow control is enabled by the rx_flow_en bit in the
MacControl register. Receive flow control is triggered (when enabled) when the RX_FLOW_TRIGGER
input is asserted. The CPGMAC_SL is configured for collision or IEEE 802.3X flow control via the
fullduplex bit in the MacControl register.
14.3.2.12.2.1.1 Collision Based Receive Buffer Flow Control
Collision-based receive buffer flow control provides a means of preventing frame reception when the port
is operating in half-duplex mode (fullduplex is cleared in MacControl). When receive flow control is
enabled and triggered, the port will generate collisions for received frames. The jam sequence transmitted
will be the twelve byte sequence C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3.C3 (hex). The jam sequence will
begin no later than approximately as the source address starts to be received. Note that these forced
collisions will not be limited to a maximum of 16 consecutive collisions, and are independent of the normal
back-off algorithm. Receive flow control does not depend on the value of the incoming frame destination
address. A collision will be generated for any incoming packet, regardless of the destination address.
14.3.2.12.2.1.2 IEEE 802.3X Based Receive Flow Control
IEEE 802.3x based receive flow control provides a means of preventing frame reception when the port is
operating in full-duplex mode (fullduplex is set in MacControl). When receive flow control is enabled and
triggered, the port will transmit a pause frame to request that the sending station stop transmitting for the
period indicated within the transmitted pause frame.
The CPGMAC_SL 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 (0xFFFF). The
MAC will count the receive pause frame time (decrements 0xFF00 downto zero) and retransmit an
outgoing pause frame if the count reaches zero. When the flow control request is removed, the MAC will
transmit a pause frame with a zero pause time to cancel the pause request.
1207
SPRUH73H – October 2011 – Revised April 2013
Ethernet Subsystem
Copyright © 2011–2013, Texas Instruments Incorporated