SPRUIU1C July 2020 – February 2024 DRA821U , DRA821U-Q1
The Host Buffer Descriptor is identical in size and organization to a Host Packet Descriptor but does not include valid information in the packet level fields and does not include a populated region for protocol specific information. Host Buffer Descriptors are designed to be linked onto a Host Packet Descriptor or another Host Buffer Descriptor to provide support for unlimited scatter/gather type operations. Host Buffer Descriptors provide information about a single corresponding data buffer.
Every Host buffer descriptor stores the following information:
Host Buffer Descriptors always contain 48 bytes of required information. Since it is a requirement that it is possible to convert a Host descriptor between a Buffer Descriptor and a Packet Descriptor (by filling in the appropriate fields) in practice, Host Buffer Descriptors will be allocated using the same sizes as Host Packet Descriptors.
The Host Buffer Descriptor layout is shown below.
Buffer Reclamation Info (16 bytes) |
Linking Info (8 bytes) |
Buffer Info (12 bytes) |
Original Buffer Info (12 bytes) |
A Host Packet Descriptor and zero or more Host Buffer Descriptors may be linked together using the Next Descriptor Pointer fields to form packets. The last descriptor in a packet has a zero Next Descriptor Pointer. Each Host Buffer descriptor also points to a single data buffer.
The contents of the Host Buffer Descriptor words are detailed in Table 10-20 through Table 10-31.
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | RESERVED | Reserved | No |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | RESERVED | Reserved | No |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:18 | RESERVED | 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 Num | This field indicates the ring number within the Ring Accelerator that the descriptor is to be returned to after transmission is complete. | No |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:0 | RESERVED | Reserved | No |
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 | 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 | 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 MSBs of the 48-bit buffer pointer | Yes |
Bits | Name | Description | Rx Overwrite |
---|---|---|---|
31:22 | RESERVED | Yes | |
21:0 | Buffer N 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:28 | RESERVED | No | |
27: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 BD 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 BD 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 | Yes | |
19:16 | Original Buffer 0 Pointer Address Space Select | Effectively bits 51:48 of the address – treated special 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 |