SPRUJ17H March 2022 – October 2024 AM2631 , AM2631-Q1 , AM2632 , AM2632-Q1 , AM2634 , AM2634-Q1
A transmit buffer descriptor is a contiguous block of four 32-bit data words aligned on a 32-bit word boundary.
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
NEXT_DESCRIPTOR_POINTER | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
NEXT_DESCRIPTOR_POINTER |
Bit | Field | Description |
---|---|---|
31-0 | NEXT_DESCRIPTOR_POINTER | The 32-bit word aligned memory address of the next buffer descriptor in the RX queue. This is the mechanism used to reference the next buffer descriptor from the current buffer descriptor. If the value of this pointer is zero, then the current buffer is the last buffer in the queue. Set by the host. |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
BUFFER_POINTER | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
BUFFER_POINTER |
Bit | Field | Description |
---|---|---|
31-0 | BUFFER_POINTER | The byte aligned memory address of the buffer associated with the buffer descriptor. Set by the host. |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
RESERVED | BUFFER_OFFSET | ||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
RESERVED | BUFFER_LENGTH |
Bit | Field | Description |
---|---|---|
31-28 | RESERVED |
Reserved |
27-16 | BUFFER_OFFSET |
Indicates how many unused bytes are at the start of the buffer. The buffer offset is reduced to 12-bits. A value of 0x0000 indicates that there are no unused bytes at the start of the buffer and that valid data begins on the first byte of the buffer. A value of 0x000F indicates that the first 15 bytes of the buffer are to be ignored by the port and that valid buffer data starts on byte 16 of the buffer. The port writes BUFFER_OFFSET with the value from the CPDMA_TH_BUFFER_OFFSET_REG register value. The host initializes the BUFFER_OFFSET to zero for free buffers. The BUFFER_LENGTH must be greater that the CPDMA_TH_BUFFER_OFFSET_REG register value. The buffer offset is valid only on SOP. |
15-12 | RESERVED |
Reserved |
11-0 | BUFFER_LENGTH |
Indicates how many valid data bytes are in the buffer. The buffer length is reduced to 12-bits. Unused or protocol specific bytes at the beginning of the buffer are not counted in the Buffer Length field. The host initializes the BUFFER_LENGTH, but the port may overwrite the host initiated value with the actual buffer length value on SOP and/or EOP buffer descriptors. SOP buffer length values will overwritten if the packet size is less than the size of the buffer or if the offset is nonzero. EOP buffer length values will be overwritten if the entire buffer is not filled up with data. The BUFFER_LENGTH must be greater than zero. |
31 | 30 | 29 | 28 | 27 | 26 | 25 | 24 | 23 | 22 | 21 | 20 | 19 | 18 | 17 | 16 |
SOP | EOP | OWNERSHIP | EOQ | TEARDOWN_COMPLETE | PASSED_CRC | LONG | SHORT | MAC_CTL | OVERRUN | PKT_ERR | VLAN_ENCAP | FROM_PORT | |||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
TS_ENCAP | MEMORY_PROTECT_ERROR | CRC_TYPE | CHKSUM_ENCAP | PACKET_LENGTH |
Bit | Field | Description |
---|---|---|
31 | SOP |
Start of Packet- Indicates that the descriptor buffer is the first buffer in the packet. The port sets the SOP bit. 0h - Not start of packet buffer 1h - Start of packet buffer |
30 | EOP |
End of Packet- Indicates that the descriptor buffer is the last buffer in the packet. The port sets the EOP bit. 0h - Not end of packet buffer 1h - End of packet buffer |
29 | OWNERSHIP |
Ownership- Indicates ownership of the packet and is valid only on SOP. This bit must be set by the host and is cleared by the port when the packet has been transferred (and the TH_OWNERSHIP bit is clear). The host uses this bit to reclaim buffers. If the TH_OWNERSHIP bit is set then the port does not clear this bit which can reduce the host workload in some applications. 0h - The packet is owned by the host 1h - The packet is owned by the port |
28 | EOQ |
End of Queue- Set by the port to indicated that the RX queue empty condition exists. This bit is valid only on EOP. The port determines the end of queue condition by a zero NEXT_DESCRIPTOR_POINTER. 0h - The RX queue has more buffers available for reception. 1h - The Descriptor buffer is the last buffer in the last packet in the queue. |
27 | TEARDOWN_COMPLETE |
Teardown Complete- Set by the port to indicate that the host commanded teardown process is complete, and the channel buffers may be reclaimed by the host. The bit is valid only on SOP. 0h - The port has not completed the teardown process 1h - The port has completed the commanded teardown process. |
26 | PASSED_CRC | Set by the port to indicate that the CRC was passed with the data. The PACKET_LENGTH includes the CRC bytes. The PASSED_CRC bit is valid only on SOP. The P0_TX_CRC_REMOVE bit in the CPDMA_CONTROL register determines if CPPI 3.0 transmit packets have a CRC included or not. The CRC type if present is determined by the P0_TX_CRC_TYPE bit in the CPDMA_Control register. |
25 | LONG | Jabber Frame - Indicates that the frame is a jabber frame and was not discarded because RX_CEF_EN was set in the ingress port ETH_MAC_0_PN_MAC_CONTROL_REG register. Valid only on SOP. |
24 | SHORT | Fragment Frame - Indicates that the frame is a fragment and was not discarded because RX_CEF_EN was set in the ingress port ETH_MAC_0_PN_MAC_CONTROL_REGregister. Valid only on SOP. |
23 | MAC_CTL | Control Frame - Indicates that the frame is a MAC control frame and was not discarded because the RX_CMF_EN was set in the ingress port ETH_MAC_0_PN_MAC_CONTROL_REG register. Valid only on SOP. |
22 | OVERRUN |
Overrun - Set by the port to indicate that the frame reception was aborted due to transmit buffer overrun. This bit is valid only on SOP. 0h - no overrun occurred on the packet 1h - The packet was aborted due to overrun |
21-20 | PKT_ERROR |
Packet Contained Error on Ethernet Ingress. This field is valid on SOP. 00h - no error 01h - CRC error on ingress 10h - Code error on ingress 11h - align error on ingress |
19 | VLAN_ECAP | VLAN Encapsulated Packet- Indicates when set that the packet data contains a 32-bit VLAN header word that is included in the packet byte count. This field is set by the port to be the value of the CPDMA_CONTROL_REG register TH_VLAN_ENCAP bit. If both VLAN_ENCAP and TS_ENCAP are set then the VLAN is first. This encapsulated word also contains the ALE classification FLOW (threadval). This bit is valid on SOP. |
18-16 | FROM_PORT | Indicates the Ethernet ingress port number. This field is valid only on SOP. |
15 | TS_ENCAP | Timestamp Encapsulated Packer - Indicates when set that the packet data contains a 64-bit timestamp (two 32-bit words with the lower 32-bit word first) that is included in the packet byte count. This field is set by the port to be the value of the CPDMA_CONTROL_REG register TH_TS_ENCAP bit. If both VLAN_ENCAP and TS_ENCAP are set then the VLAN is first. This bit is valid on SOP. |
14 | MEMORY_PROTECT_ERROR | An error was detected in the packet Castignoli protect CRC. The packet should be dropped by the host. |
13 | CRC_TYPE |
The packet CRC type. 0h: Ethernet CRC 1h: Castagnoli CRC |
12 | CHKSUM_ENCAP | Checksum Encapsulated Packet - Indicates when set that the packet data contains 4-bytes of transmit checksum information at the end of the packet (last 4 bytes). The packet length includes the checksum bytes. This bit will be set for every packet to the Host when P0_TX_CHKSUM_EN is set. This bit is valid on SOP |
11-0 | PACKET_LENGTH | Specifies the number of bytes in the entire packet. Offset bytes are not included. The sum of the BUFFER_LENGTH fields should equal the PACKET_LENGTH. Valid only on SOP. |