SPRUJ28E November 2021 – September 2024 AM68 , AM68A , TDA4AL-Q1 , TDA4VE-Q1 , TDA4VL-Q1
The Monolithic Packet Descriptor contains the following information:
The maximum size of a Monolithic Packet Descriptor is 4 MB. Of this, Monolithic Packet Descriptors always contain 16 bytes of required information and may also contain 16 bytes of software specific tagging information and up to 128 bytes (indicated in 4 byte increments) of protocol specific information. How much protocol specific information (and therefore the allocated size of the descriptors) is application dependent.
The Monolithic Packet descriptor layout is shown below.
Packet Info (16 bytes) |
Extended Packet Info Block (Optional) Includes Timestamp, and software Data Words (16 bytes) |
Protocol Specific Data (Optional) (0 to M bytes where M is a multiple of 4) |
Null Region (0 to 511 bytes) |
Packet Data (0 to 4M – 1) |
Other software Data (Optional and User Defined) |
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 private data. This region is not used in any way by the hardware components in a UDMA system and these modules will not modify any bytes within this region.
The contents of the Monolithic Packet Descriptor words are detailed in Table 10-31 through Table 10-40
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:30 | 2’d2 | Monolithic Packet Descriptor type. | 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 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. The valid range for the 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 = To Be Assigned | Yes |
26:18 | Data Offset | This field indicates the byte offset from byte 0 of this descriptor to the location where the valid data begins.
On Rx, this value is set equal to the value for the SOP offset given in the Rx DMA channel’s Monolithic control register. When a monolithic packet is processed, this value may be modified in order to add or remove bytes to from the beginning of the packet. The value for this field can range from 0-511 bytes. Note that the value of this field must always be greater than or equal to 4 times the value given in the Protocol Specific Valid Word Count field. | Yes |
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 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. 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 Num | This field indicates the queue number that the descriptor is to be returned to after transmission is complete. | 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 | Timestamp Info | This field contains an application specific timestamp which can be used for traffic shaping in a QoS enabled system. | 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 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 |
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 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 |
These words if present immediately follow the Software Data Block Information.
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | Protocol Specific Data N | This field stores information which varies depending on the packet type. | Configurable |
The payload data follows the protocol specific words at an offset specified in the data offset field of Word 0.
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | Packet Data N | These words store the packet payload data. | Yes |
This field is endian specific. In other words, this is the only field in the descriptor which changes based on the endianness of the system.