SPRUIU1C July 2020 – February 2024 DRA821U , DRA821U-Q1
Host Packet Descriptors are designed to be used when the application requires support for true, unlimited fragment count scatter/gather type operations. The Host Packet Descriptor contains the following information:
Host Packet Descriptors always contain 48 bytes of required information and may also contain optional software specific information and protocol specific information. How much optional information (and therefore the allocated size of the descriptors) is required is application dependent.
The Host Packet descriptor layout is shown below.
Packet Info (16 bytes) |
Linking Info (8 bytes) |
Buffer Info (12 bytes) |
Original Buffer Info (12 bytes) |
Extended Packet Info Block (Optional) Includes Timestamp and Software Data (16 bytes) |
Protocol Specific Data (Optional) (0 to M bytes where M is a multiple of 4) |
Other Software Data (Optional and User Defined) |
Host Packet Descriptors may be linked with zero or more additional Host Buffer Descriptors in a singly linked list fashion to form packets. Each Host Packet consists of a single Host Packet Descriptor followed by a chain of zero or more Host Buffer Descriptors linked together using the Next Descriptor Pointer fields in the descriptors. The last descriptor in a Host packet has a zero Next Descriptor Pointer.
The 'Other Software Data' portion of the descriptor exists after all of the defined words and is reserved for use by the host software to store completely private data. This region is not used in any way by hardware components in a UDMA system and these modules will not modify any bytes within this region.
The contents of the Host Packet Descriptor words are detailed in Table 10-3 through Table 10-19.
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:30 | 2’d1 | 64-bit Host Packet Descriptor Type Identifier | Yes |
29 | Extended Packet Info Block Present | This field indicates the presence of the Extended Packet Info Block in the descriptor.
0 = EPIB is not present 1 = 16 byte EPIB is present | Yes |
28 | Protocol Specific Region Location | This field indicates the location of the Protocol Specific Words:
0 = PS Words are located in the descriptor 1 = PS Words are located in the SOP Buffer immediately prior to the data. | Yes |
27:22 | Protocol Specific Valid Word Count | This field indicates the valid number of 32-bit words in the protocol specific region. This is encoded in increments of 4 bytes as follows:
0 = 0 bytes 1 = 4 bytes … 16 = 64 bytes ... 32 = 128 bytes 33-63 = RESERVED | Yes |
21:0 | Packet Length | The length of the packet in bytes. If the Packet Length is less than the sum of the buffer lengths, then the packet data will be truncated. A Packet Length greater than the sum of the buffers is an error unless the packet length is set to 0x3FFFFF. If the packet length is set to all 1s (0x3FFFFF) the Tx port will disable truncation and will transmit as much data as is specified in the Buffer Length fields. On Rx, if the received data exceeds 4M-1 bytes, the packet length field will saturate to a value of 0x3FFFFF.
The valid range for an exact packet length is 0 to 4M-1 bytes. If the packet length is set to 0, the port will not actually transmit any information. Instead, the port will perform buffer/descriptor reclamation as instructed in the return information in word 2. | Yes |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:28 | Error Flags | This field contains error flags that can be assigned based on the packet type | Yes |
27:24 | Protocol Specific Flags | This field contains protocol specific flags/information that can be assigned based on the packet type. | Yes |
23:14 | Packet ID | Unique Packet ID for packet within FlowID | Yes |
13:0 | Flow ID | Flow ID within which this packet is being transported. The FlowID is used by downstream blocks to make decisions about packet steering and resource allocations. FlowIDs are also used to allow specific packets to be received into specific sets of buffers. | Yes |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:27 | Packet Type | This field indicates the type of this packet and is encoded as follows:
0-31 = Application specific | Yes |
26:19 | RESERVED | Reserved | No |
18 | Return Policy | This field indicates the return policy for this packet.
0 = Entire packet (still linked together) should be returned to queue specified in bits 15:0. 1 = Each buffer should be returned to queue specified in bits 15:0 of Word 2 in their respective descriptors. The Tx DMA will return each buffer in sequence. | No |
17 | Early Return | This field indicates that each buffer pointer should be immediately returned to the specified queue when data transfer is started from the packet instead of waiting for the entire buffer to be emptied. This flag is used to enable in-place reception of packets on a Receive Channel while the source packet is in the process of being transferred on a Transmit Channel.
0 = Buffer/Packet descriptor pointers should only be returned after all reads have been completed 1 = Buffer/Packet descriptor pointers should be returned immediately upon fetching the descriptor and beginning to transfer data. | No |
16 | Return Push Policy | This field indicates how a Transmit or Receive DMA should return the descriptor pointers to the free queues
This field is encoded as follows: 0 = Descriptor must be returned to tail of queue 1 = Descriptor must be returned to head of queue This bit is only used when the Return Policy bit is set to 1. The Rx DMA will only use this field when an error occurs during reception and the DMA must return descriptors back to the free queue from which they came. This field must be set to 0 for descriptors which will be placed on queues managed by the Ring Accelerator. | No |
15:0 | Packet Return Queue/Ring Num | This field indicates the ring number in the RA that the descriptor is to be returned to after transmission is complete. The value 0xFFFF is reserved. | No |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:24 | Source Tag – Hi | This field is application specific. During Packet reception, the DMA controller in the port will overwrite this field as specified in the rx_src_tag_hi_sel field in the flow configuration table entry. | Configurable |
23:16 | Source Tag – Lo | This field is application specific. During Packet reception, the DMA controller in the port will overwrite this field as specified in the rx_src_tag_lo_sel field in the flow configuration table entry. | Configurable |
15:8 | Dest Tag – Hi | This field is application specific. During Packet reception, the DMA controller in the port will overwrite this field as specified in the rx_dest_tag_hi_sel field in the flow configuration table entry. | Configurable |
15:0 | Dest Tag – Lo | This field is application specific. During Packet reception, the DMA controller in the port will overwrite this field as specified in the rx_dest_tag_lo_sel field in the flow configuration table entry. | Configurable |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | Next Descriptor Pointer LSB | The 32 LSBs of the 48-bit, 16-byte aligned (min), memory address of the next buffer descriptor in the packet. If the value of this pointer is zero then the current buffer is the last buffer in the packet. The host sets the Next Descriptor Pointer. | Yes |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:20 | RESERVED | Reserved | Yes |
19:16 | Next Descriptor Pointer Address Space Select | Effectively bits 51:48 of the address. The value given in this field will be output by the DMA masters on the casel pin which is used by the infrastructure as an identifier for which address space this particular memory region is located within. Address space 0 is the default unified address space for a given device. Address spaces 1-15 are used for alternate address maps which may be external to the device (PCIe/Hyperlink) or in other ‘tiles’ on large devices. | Yes |
15:0 | Next Descriptor Pointer MSB | The 16 MSBs of the 48-bit next descriptor pointer | Yes |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | Buffer 0 Pointer LSB | The Buffer Pointer is the byte aligned memory address of the buffer associated with the buffer descriptor. This value will be written during reception. If the protocol specific words are placed at the beginning of the SOP buffer, this pointer will point to the PS words. The offset to the data in that case must be calculated by the consumer using the Protocol Specific Valid Word Count from Word 2. These are the 32 LSBs of the 48-bit buffer pointer. | Yes |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:20 | RESERVED | Reserved | Yes |
19:16 | Buffer 0 Pointer Address Space Select | Effectively bits 51:48 of the address. The value given in this field will be output by the DMA masters on the casel pin which is used by the infrastructure as an identifier for which address space this particular memory region is located within. Address space 0 is the default unified address space for a given device. Address spaces 1-15 are used for alternate address maps which may be external to the device (PCIe/Hyperlink) or in other ‘tiles’ on large devices. | Yes |
15:0 | Buffer 0 Pointer MSB | The 16 MSBs of the 48-bit buffer pointer | Yes |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:22 | RESERVED | Written to 0 | Yes |
21:0 | Buffer 0 Length | The Buffer Length field indicates how many valid data bytes are in the buffer. Unused or protocol specific bytes at the beginning of the buffer are not counted in the Buffer Length field. This value will be overwritten during reception. | Yes |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:22 | RESERVED | No | |
21:0 | Original Buffer 0 Length | The Buffer Length field indicates the original size of the buffer in bytes. Data bytes are in the buffer. This value will not be overwritten during reception. This value is read by the Rx DMA to determine the actual buffer size as allocated by the host at initialization. Since the buffer length in PD Word 8 is overwritten by the Rx port during reception, this field is necessary to permanently store the buffer size information. | No |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | Original Buffer 0 Pointer LSB | The Buffer Pointer is the byte aligned memory address of the buffer associated with the buffer descriptor. This value will not be overwritten during reception. This value is read by the RX DMA to determine the actual buffer location as allocated by the host at initialization. Since the buffer pointer in PD Words 6/7 is overwritten by the Rx port during reception, this field is necessary to permanently store the buffer pointer information. This field contains the 32 LSBs of the 48-bit original buffer pointer | No |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:20 | RESERVED | Reserved | Yes |
19:16 | Original Buffer 0 Pointer Address Space Select | Effectively bits 51:48 of the address. The value given in this field will be output by the DMA masters on the casel pin which is used by the infrastructure as an identifier for which address space this particular memory region is located within. Address space 0 is the default unified address space for a given device. Address spaces 1-15 are used for alternate address maps which may be external to the device (PCIe/Hyperlink) or in other ‘tiles’ on large devices. | Yes |
15:0 | Original Buffer 0 Pointer MSB | The 16 MSBs of the 48-bit original buffer pointer | No |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | Timestamp Info | This field contains an application specific timestamp which can be used for traffic shaping in a QoS enabled system. | Configurable |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | Software Info 0 | This field stores software centric information that needs to travel with the packet through the stack. This information will be copied from the source descriptor to the destination descriptor whenever a prefetch operation is performed or when transferring through an infrastructure DMA node. | Configurable |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | Software Info 1 | This field stores software centric information that needs to travel with the packet through the stack. This information will be copied from the source descriptor to the destination descriptor whenever a prefetch operation is performed or when transferring through an infrastructure DMA node. | Configurable |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | Software Info 2 | This field stores software centric information that needs to travel with the packet through the stack. This information will be copied from the source descriptor to the destination descriptor whenever a prefetch operation is performed or when transferring through an infrastructure DMA node. | Configurable |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | Protocol Specific Data N | This field stores information which varies depending on the block and packet type. | Configurable |