The AXI control stream is provided from the Scatter Gather Descriptor to a target device for User Application data. The control data is associated with the MM2S primary data stream and can be sent out of the AXI MCDMA IP prior to, during, or after the primary data packet. Throttling by the target device is allowed, and throttling by AXI MCDMA can occur. The following figure shows an example of how the descriptor User Application fields are presented on the AXI control stream. AXI MCDMA inserts a flag indicating the data type to the target device. This is sent as the first word. For Ethernet, the control tag is 0xA in the four most significant bits (MSBs) of the first word.
| Data | Bit | Description | Comments | |
|---|---|---|---|---|
| APP0 | 31:24 | Header Length of packet including transport Header | Total header length of the packet (Ethernet header + IPv4 header + TCP/UDP header). | |
| 23:0 | Total Length of Packet (LSB 24 bits) | Maximum supported Packet Length is 16 MB (skb→len) (excluding Ethernet header). | ||
| APP1 | 31:30 | Unused | ||
| 29:16 | MSS Size | Maximum supported value is 9000 bytes (excluding the Ethernet header). | ||
| 15:12 | Function Select | Function selection to select a particular function to add a header/marker on top of the repetitive buffer length (for future use). | ||
| 11 | UDP Segmentation Offload (0 - ON,1-OFF) | NETIF_F_GSO_UDP_L4_BIT | ||
| 10 | TCP Segmentation Offload (0 - ON,1-OFF) | NETIF_F_TSO_BIT (reserved for future use) | ||
| 9 | checksum TCP/UDP over IPv4 (0 - ON,1-OFF) | NETIF_F_IP_CSUM_BIT | ||
| 8 | is_gso_packet (0 - ON,1-OFF) | Identified from GSO segments in the kernel. | ||
| 7 | is_fixed_ip_id (0 - Fixed IP ID, 1- Increment IP ID LSB 14 bits, do not change 15 bit) | Driver should enable based on SKB_GSO_TCP_FIXEDID and NETIF_F_TSO_MANGLEID_BIT. | ||
| 6:2 | Reserved/Unused | |||
| 1:0 | Total length of packet (MSB) | |||
| APP2 | 31:0 | Reserved/Unused | ||
| APP3 | 31:0 | Reserved/Unused | ||
| APP4 | 31:0 | Reserved/Unused | ||
The S2MM status stream is provided for transfer of the target device status to User Application data fields in the Scatter Gather descriptor. The status data is associated with the S2MM primary data stream. As shown in the following figure, the status packet updates to the app fields of the detected last descriptor (RXEOF = 1) describing the packet. The status data is sent after a flag.
| Data | Bit | Description | Comments | |
|---|---|---|---|---|
| APP0 | 31 | Completed | After each packet completion. | |
| 30 | Start of packet | For Header packet or non-GRO packets. | ||
| 29 | End of packet | For the last packet when number of chunks have finished or non-GRO packet. | ||
| 28:24 | Sequence number | Packet number for GRO packets. | ||
| 23 | Checksum Calculated |
0: not calculated/non IPv4 packet 1: Calculated |
||
| 21 | UDP/TCP Checksum Error |
0: No Error 1: UDP/TCP Checksum Error |
||
| 20 | Generic Error Packet | 1: Error packet received from MAC with
> MTU size 0: packet received from MAC is not > MTU |
||
| 19:16 | Reserved | |||
| 15:0 | Fragment Length | Each fragment length. | ||
| APP1 | 15:0 | Packet length |
Total length of the stitched packet without Ethernet header from SOP to EOP. Valid only when the end of packet flag is present |
|
| 31:16 | IP Checksum Value | |||
| APP2 | 31:0 | Reserved/Unused | ||
| APP3 | 31:0 | Reserved/Unused | ||
| APP4 | 31:0 | Reserved/Unused | ||