SPRUGR9H November 2010 – April 2015 66AK2E05 , 66AK2H06 , 66AK2H12 , 66AK2H14 , 66AK2L06 , AM5K2E02 , AM5K2E04 , SM320C6678-HIREL , TMS320C6652 , TMS320C6654 , TMS320C6655 , TMS320C6657 , TMS320C6670 , TMS320C6671 , TMS320C6672 , TMS320C6674 , TMS320C6678
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 32 bytes of required information. Because 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 descriptor layout is shown in Table 3-15.
Reserved
(10 bytes) |
Buffer reclamation info
(2 bytes) |
Buffer info (8 bytes) |
Linking info (4 bytes) |
Original buffer info
(8 bytes) |
Reserved
(10 bytes) |
Buffer reclamation info
(2 bytes) |
Buffer info (8 bytes) |
Linking info (4 bytes) |
Original buffer info
(8 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 0 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 3-16 through Table 3-23. The host buffer descriptor is designed to be interchangeable with host packet descriptors, with common fields residing in the same locations.
Bits | Name | Description | RX Overwrite |
---|---|---|---|
31-0 | Reserved | Reserved for host packet fields | No |
Bits | Name | Description | RX Overwrite |
---|---|---|---|
31-0 | Reserved | Reserved for host packet fields | No |
Bits | Name | Description | RX Overwrite |
---|---|---|---|
31-15 | Reserved | Reserved for host packet fields | No |
14 | 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:
This bit is used only when the Return Policy bit is set to 1. |
No |
13-12 | Packet Return Queue Mgr # | This field indicates which of the four potential queue managers in the system the descriptor is to be returned to after transmission is complete. This field is not altered by the DMA during transmission or reception and should be initialized by the host. | No |
11-0 | Packet Return Queue # | This field indicates the queue number within the selected queue manager that the descriptor is to be returned to after transmission is complete. | No |
Bits | Name | Description | RX Overwrite |
---|---|---|---|
31-22 | Reserved | Reserved for host packet fields | 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-0 | Buffer N Pointer | 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. | Yes |
Bits | Name | Description | RX Overwrite |
---|---|---|---|
31-0 | Next Descriptor Pointer | The 32-bit word aligned memory address of the next buffer descriptor in the packet. This is the mechanism used to reference the next buffer descriptor from the current buffer descriptor. If the value of this pointer is 0, then the current buffer is the last buffer in the packet. This value will be overwritten during reception. | Yes |
Bits | Name | Description | RX Overwrite |
---|---|---|---|
31-28 | Original Buffer 0 Pool Index | This field is used to identify which pool the attached buffer was originally allocated from. This is distinct from the descriptor pool/queue index because a single buffer may be referenced by more that one descriptor. This is a software-only field that is not touched by the hardware. | No |
27-22 | Original Buffer 0 Reference Count | This field is used to indicate how many references have been made to the attached buffer by different descriptors. Multiple buffer references are commonly used to implement broadcast and multicast packet forwarding when zero packet data copies are desired. This is a software-only field that is not touched by the hardware. | 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. Because the buffer length in word 3 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 | 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. Because the buffer pointer in word 4 is overwritten by the RX port during reception, this field is necessary to permanently store the buffer pointer information. | No |