Datasheet

____________________________________________________ DS34S101, DS34S102, DS34S104, DS34S108
Rev: 032609 80 of 198
10.6.12.2
Pause Packet Support
Ethernet transmission pause in response to a received pause packet is enabled when Pause_enable=1 in the
MAC_network_configuration register.
When a valid pause packet is received, the MAC_pause_time register is updated with the packet’s pause time
regardless of its current contents and regardless of the state of Pause_enable bit. In addition, the Pause_packet_
Rxd interrupt in the MAC_interrupt_status is triggered if it is enabled in the MAC_interrupt_mask register.
If Pause_enable=1 and the value of the MAC_pause_time register is non-zero, no new packet is transmitted.
A valid pause packet is defined as having a destination address that matches 0x0180C2000001, an Ethertype of
0x8808, and the pause opcode of 0x0001 as shown in Table 10-28.
Table 10-28. Start of an 802.3 Pause Packet
Destination
Address
Source
Address
Ethertype (MAC Control
Frame)
Pause opcode
Pause Time
0x0180C2000001
6 bytes
0x8808
0x0001
2 bytes
Pause packets that have FCS or other errors are treated as invalid and discarded. Valid received pause packets
increment the Pause_packets_Rxd_OK counter.
The MAC_pause_time register decrements every 512 bit times after transmission has stopped. For test purposes,
the register decrements every MII receive clock cycle instead if Retry_test=1 in the MAC_network_configuration
register. If the Pause_enable bit is not set, the decrementing happens regardless of whether transmission has
stopped or not.
The Pause_time_zero interrupt in the MAC_interrupt_status register is asserted whenever the MAC_pause_time
register decrements to zero (assuming it is enabled in the MAC_interrupt_mask).
Automatic transmission of pause packets is supported through the transmit pause packet bits of the
MAC_network_control register. If either Transmit_pause_packet or Transmit_zero_quantum_pause_ packet is set,
a pause packet is transmitted only if Full_duplex=1 in the MAC_network_configuration register and
Transmit_enable=1 in the MAC_network_control register. Pause packet transmission takes place immediately if
transmit is inactive or if transmit is active between the current packet and the next packet due to be transmitted.
The transmitted pause packet comprises the items in the following list:
Destination address of 01-80-C2-00-00-01
Source address taken from the MAC_specific_address registers
Ethertype of 0x8808 (MAC control frame)
Pause opcode of 0x0001
Pause quantum
Fill of 0x00 to take the frame to minimum frame length
Valid FCS.
The pause quantum used in the generated packet depends on the trigger source for the packet as follows:
If Transmit_pause_packet=1, the pause quantum comes from the MAC_transmit_paulse_quantum
register. The Transmit Pause Quantum register resets to a value of 0xFFFF giving a maximum pause
quantum as a default.
If Transmit_zero_quantum_pause_ packet=1, the pause quantum is zero.
After transmission, no interrupts are generated and the only counter incremented is the
Transmitted_pause_packets.
Pause packets can also be transmitted by the MAC using normal packet transmission methods. It is possible to
transmit a pause packet while the transmitter is paused by resetting the Pause_enable bit.