Functional Description
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).
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.
The CPGMAC_SL will transmit pause frames as described below:
•
The 48-bit reserved multicast destination address 01.80.C2.00.00.01.
•
The 48-bit source address — SL_SA(47:0).
•
The 16-bit length/type field containing the value 88.08
•
The 16-bit pause opcode equal to 00.01
•
The 16-bit pause time value FF.FF. A pause-quantum is 512 bit-times. Pause frames sent to cancel a
pause request will have a pause time value of 00.00.
•
Zero padding to 64-byte data length (The CPGMAC_SL will transmit only 64 byte pause frames).
•
The 32-bit frame-check sequence (CRC word).
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 is cleared to zero while the pause time is nonzero, then the pause time will be cleared to
zero and a zero count pause frame will be sent.
14.3.2.12.2.2 Transmit Flow Control
Incoming pause frames are acted upon, when enabled, to prevent the CPGMAC_SL from transmitting any
further frames. Incoming pause frames are only acted upon when the fullduplex and tx_flow_en bits in
the MacControl register are set. Pause frames are not acted upon in half-duplex mode. Pause frame
action will be taken if enabled, but normally the frame will be filtered and not transferred to memory.
MAC control frames will be transferred to memory if the rx_cmf_en (Copy MAC Frames) bit in the
MacControl register is set. The tx_flow_en and fullduplex bits effect whether or not MAC control frames
are acted upon, but they have no effect upon whether or not MAC control frames are transferred to
memory or filtered.
Pause frames are a subset of MAC Control Frames with an opcode field=0x0001. Incoming pause frames
will only be acted upon by the port if:
•
tx_flow_en is set in MacControl, and
•
the frame’s length is 64 to rx_maxlen bytes inclusive, and
•
the frame contains no crc error or align/code errors.
The pause time value from valid frames will be extracted from the two bytes following the opcode. The
pause time will be loaded into the port’s transmit pause timer and the transmit pause time period will
begin.
If a valid pause frame is received during the transmit pause time period of a previous transmit pause
frame then:
•
if the destination address is not equal to the reserved multicast address or any enabled or disabled
unicast address, then the transmit pause timer will immediately expire, or
•
if the new pause time value is zero then the transmit pause timer will immediately expire, else
•
the port transmit pause timer will immediately be set to the new pause frame pause time value. (Any
remaining pause time from the previous pause frame will be discarded).
If tx_flow_en in MacControl is cleared, then the pause-timer will immediately expire.
The port will not start the transmission of a new data frame any sooner than 512-bit times after a pause
frame with a non-zero pause time has finished being received (MRXDV going inactive). No transmission
will begin until the pause timer has expired (the port may transmit pause frames in order to initiate
outgoing flow control). Any frame already in transmission when a pause frame is received will be
completed and unaffected.
1208
Ethernet Subsystem
SPRUH73H – October 2011 – Revised April 2013
Copyright © 2011–2013, Texas Instruments Incorporated