SPRUJ17H March 2022 – October 2024 AM2631 , AM2631-Q1 , AM2632 , AM2632-Q1 , AM2634 , AM2634-Q1
A receive 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 |
BUFFER_OFFSET | |||||||||||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
BUFFER_LENGTH |
Bit | Field | Description |
---|---|---|
32-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 THost_BUFFER_OFFSET register value. The host initializes the BUFFER_OFFSET to zero for free buffers. The BUFFER_LENGTH must be greater that the THost_BUFFER_OFFSET register value. The buffer offset is valid only on SOP. |
15-0 | BUFFER_LENGTH |
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. The host sets the BUFFER_LENGTH. 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 | PASS_CRC | CRC_TYPE | RESERVED | TO_PORT_EN | TO_PORT | ||||||
15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
HOST_EVENT | CHKSUM_ENCAP | RESERVED | 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 zero. 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 on an EOP buffer. 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 | PASS_CRC | Pass CRC - Valid only on SOP 0h - A CRC is not included with the packet data. The Ethernet port(s) will generate the CRC on Ethernet egress. A CRC (or placeholder) at the end of the data is allowed, but not required, and the BUFFER_COUNT and PACKET_LENGTH fields should not include the CRC bytes if they are present. 1h - A CRC is included with the host packet data. The PACKET_LENGTH and BUFFER_COUNT fields should include the four CRC bytes. The host SUPPLIED CRC should be in the last four bytes of the data. |
25 | CRC_TYPE |
The packet CRC type. 0h: Ethernet CRC 1h: Castagnoli CRC |
24-21 | RESERVED | Reserved |
20 | TO_PORT_EN |
To Port Enable- Indicates when set that the packet is a directed packet to be sent to the TO_PORT field port number. This field is set by the host. The packet is sent to one port only (index not mask). This bit is valid on SOP. 0h - Not a directed packet 1h - Directed packet |
19-16 | TO_PORT |
To Port - Port number to send the directed packet to. This field is set by the host. The field is valid on SOP. Directed packets go to the directed port, but an ALE lookup is performed to determine untagged egress in VLAN_AWARE more. 1h - Send the packet to port 1 if TO_PORT_EN is asserted. 2h - Send the packet to port 2 if TO_PORT_EN is asserted. |
15 | HOST_EVENT |
Host Timesync Event - Generate a host timesync event on Ethernet egress. The upper 28-bits of the packet SOP buffer descriptor address are the domain[7:0], message_type[3:0], and sequence_id[15:0] in that order. 0h - The packet will not generate a host event on Ethernet egress. 1h - The packet will generate a host event on Ethernet egress. |
14 | 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. |
13-12 | RESERVED | Reserved |
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. The packet length must be greater than zero. The packet data will be truncated to the packet length if the packet length is shorter than the sum of the packet buffer descriptor buffer lengths. A host error occurs if the packet length is greater than the sum of the packet buffer descriptor buffer lengths. |