In the transmit direction, the MRMAC supports packet preemption by allowing packets currently in flight across the AXI4-Stream interface to be preempted.
When preemption is enabled, the user logic provides appropriate mPacket
header fields for all outbound frames using the preamble insertion function. The transmit
path does not interpret any of the mPacket header fields but instead places these fields, as
provided by tx_preamblein_<N>
, into the outbound
frames.
During packet transfer on TX AXI4-Stream,
user logic can indicate that a packet has been preempted by asserting the preempt signal
input (a bit in the tx_axis_tkeep_user_<N>
signal as
listed in the port descriptions) along with EOP/tlast. The user logic can then send its
express packet.
If transmit FCS insert is enabled, the TX logic calculates and inserts an mCRC on the preempted packet. The partially calculated frame CRC is stored away so it can be resumed later.
After the express packet has been transmitted, the user logic can resume the
previously preempted frame by asserting the resume
signal
along with SOP/tvalid. The MRMAC resumes
calculating the CRC for the interrupted packet. As before, the user logic must provide a
suitable mPacket header (with SMD and FRAG_COUNT set appropriately).
Care must be taken by the user logic to ensure that any outbound packet (including fragments) respects the 64B min size for a fragment/packet.
In this example, an in-flight egress frame, Frame A, transmits cycles A0 through A16. However, it is preempted
when the user logic asserts both tx_axis_tlast_0
and
tx_axis_tkeep_user0[9]
(preempt). The MRMAC calculates an mCRC for Frame A and sets aside the
partial FCS calculation for later.
The priority frame (Frame B) begins in the very next cycle. It is a minimum
length frame of 64B. Its final data (B7) is signaled normally
with tx_axis_tlast_0
. The MRMAC transmits this
frame normally.
Finally, Frame A resumes in the next cycle with the user logic asserting
the resume signal (tx_axis_tkeep_user0[10]
). The user logic-provided
preamble (tx_preamble_in_0
) must provide an appropriate preemption header.
The partially calculated FCS from earlier is retrieved and packet data transmission resumes
with packet data A17.