Programmer’s Guide BCM5722
10/15/07
Broadcom Corporation
Document 5722-PG101-R Page 50
Receive Buffer Descriptors
The format of Standard Receive Buffer Descriptors (in both producer ring and return rings) is shown in Table 15.
The fields are defined as follows:
• The Host Address field contains the 64-bit host address of the buffer that the descriptor points to. A length of 0 indicates
that the descriptor does not have a buffer associated with it.
• The Length field specifies the length of the data buffer. For Producer Rings this value is set by the host software to
correspond to the size of the buffer that is available for a receive packet. Once a packet has been received, the
controller will modify this length field to correspond to the length of the packet received. A value of 0 indicates that there
is no valid data in the buffer.
• The Index field is set by host software in the descriptors in the producer rings. When the controller uses a given buffer
descriptor, it will opaquely pass the Index field for that buffer descriptor through to the corresponding descriptor in the
return ring. This index field of the BD in Return Ring is then used by the host software to associate the BD in Return
Ring with the BD in Producer Ring that points to the given receive buffer.
• The Flags field contains bits flags that contain control information about a given descriptor. The defined flags are listed
in Table 16.
Table 15: Receive Descriptors Format
Offset (bytes) 31 16 15 0
0x00 Host Address
0x04
0x08 Index Length
0x0c Type Flags
0x10 IP_Cksum TCP_UDP_Cksum
0x14 Error_Flags VLAN tag
0x18 RSS Hash
0x1C Opaque
Table 16: Defined Flags for Receive Buffers
Bits Name Description
15 IP Version Indicates whether the received IP packet is an IPv6 or IPv4 packet. This bit will be 1
for IPv6 packet and 0 for IPv4 packet.
14 TCP_UDP_IS_TCP In producer rings this bit should be set to 0. In return rings this bit will be set to 1 by
the controller if the controller calculated that the incoming packet was a TCP packet.
If the packet is UDP or a non IP frame, then this bit should be set to 0.
13 TCP_UDP_CHECKSUM In producer rings this bit should be set to 0. In return rings this bit will be set to 1 by
the controller if the controller calculated that the TCP or UDP checksum in the
corresponding incoming packet was correct.
12 IP_CHECKSUM In producer rings this bit should be set to 0. In return rings this bit will be set to 1 by
the controller if the controller calculated that the IP checksum in the corresponding
incoming packet was correct.
11 Reserved
10 FRAME_HAS_ERROR If set to 1 in a return ring, it indicates that the controller detected an error. The
specific type of error is specified in the Error_Flag field of the receive return
descriptor.