SPRUIV7B May 2022 – September 2023 AM620-Q1 , AM623 , AM625 , AM625-Q1 , AM625SIP
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:
Indicator which identifies the descriptor as a Host Packet Descriptor
Source and Destination Tags
Packet Type
Packet Length
Protocol Specific Region Size
Protocol Specific Control / Status Bits
Pointer to the first valid byte in the SOP data buffer
Length of the SOP data buffer
Pointer to the next buffer descriptor in the packet
Software specific 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 SW 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 SW 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 HW components in a PKTDMA system and these modules will not modify any bytes within this region.
The contents of the Host Packet Descriptor words are detailed in Table Host Packet Descriptor Packet Information Word 0 (PD Word 0) through Table Packet Descriptor Protocol Specific Word N:
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 | RESERVED | - | Yes |
27:22 | Protocol Specific Valid Word Count | This field indicates the valid # 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. 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. | 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 | RESERVED | - | 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:16 | RESERVED | - | Yes |
15:0 | RESERVED | - | Yes |
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 with the value provided in the PSI-L src_tag field bits 15:8. | Yes |
23:16 | Source Tag – Lo | This field is application specific. During Packet reception, the DMA controller in the port will overwrite this field with the value provided in the PSI-L src_tag field bits 7:0. | Yes |
15:8 | Dest Tag – Hi | This field is application specific. During Packet reception, the DMA controller in the port will overwrite this field with the value provided in the PSI-L dst_tag field bits 15:8. | Yes |
7:0 | Dest Tag – Lo | This field is application specific. During Packet reception, the DMA controller in the port will overwrite this field with the value provided in the PSI-L dst_tag field bits 7:0 | Yes |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | Next Descriptor Pointer LSB | The 32 LSBs of the 48-bit word aligned 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. | No |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:20 | RESERVED | No | |
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 initiators 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. | No |
15:0 | Next Descriptor Pointer MSB | The 16 MSBs of the 48-bit next descriptor pointer. If a specific SoC uses less than 48 bits of address reach the width of this field may be reduced. | No |
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. These are the 32 LSBs of the 48-bit buffer pointer. THIS Value along with the MSB bits cannot be 0 or the buffer will be seen as a NULL PTR | Yes |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:20 | 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 initiators 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. If a specific SoC uses less than 48 bits of address reach the width of this field may be reduced. | 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. | Yes |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | RESERVED | No |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | RESERVED | No |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:20 | RESERVED | No | |
15:0 | RESERVED | 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 |
This word is only present if the Extended Packet Info Block present bit is set in Word 0.
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 |