Inbound Preemption - 1.5 English

Versal Devices Integrated 100G Multirate Ethernet MAC Subsystem Product Guide (PG314)

Document ID
PG314
Release Date
2022-01-10
Version
1.5 English

The receive logic assists packet preemption by performing integrity checks on received mPackets and extracting the mPacket header fields for presentation on the rx_premableout[55:0] port.

Preempted frames are signaled to the user logic by means of symmetrical preempt and resume tuser flags. These signals indicate if a received packet was preempted upstream or if it represents a continuation fragment packet.

For continuation packets, the FRAG_COUNT field, found in the rx_preambleout signals, indicates to the user logic that the packet must be reassembled. Reassembly is the responsibility of the user logic.

The AXI4-Stream ERR flag is used by the MRMAC to indicate that a resumed packet has failed the mCRC check. In the event a continuation packet is received with a bad mCRC, it is left to the user logic to take appropriate action.

The RX logic supports two integrity checking modes, which are controlled through bits found in the CONFIGURATION_RX_REG register.

Table 1. Preemption Integrity Checking Modes
ctl_tx_check_sdf ctl_rx_check_preamble Result
1 1 Strict SMD checking is enabled. In this mode, a received packet whose SMD byte does not match valid values from Table 99-1 from the IEEE 802.3-2018 (Clause 99) (see below) results in the AXI4-Stream ERR signal being asserted.
0 0 The RX preemption logic acts in pass-through mode and packets with invalid SMD values are passed through to the user logic without ERR. In this mode, received packets with SMD values not matching Table 99-1 toggles the error statistics (that is, stat_rx_bad_sfd) but not have the ERR flag asserted on the AXI interface. Note that if an SMD value not found in Table 99-1 is received, it indicates to the RX logic that the frame's FCS field must be checked against its expected CRC value, not an mCRC.
Table 2. SMD Values (Table 99-1)
mPacket Type Notation Frame Count Value
verify packet SMD-V 0x07
respond packet SMD-R 0x19
express packet SMD-E 0xD5
preemptable packet start SMD-S0 0 0xE6
SMD-S1 1 0x4C
SMD-S2 2 0x7F
SMD-S3 3 0xB3
continuation fragment SMD-C0 0 0x61
SMD-C1 1 0x52
SMD-C2 2 0x9E
SMD-C3 3 0x2A

In this example, an inbound frame (Frame A) is pre-empted by the arrival of priority packet Frame B. Frame A resumes later with data A17. It is the responsibility of the user logic to parse the extracted rx_preamble_out_0 to correctly re-assemble Frame A from the two segments.

Figure 1. Receive Frame Preemption