Descriptor RingsBCM5718 Programmer’s Guide
Broadcom®
January 29, 2016 • 5718-PG108-R Page 78
Receive Return Rings
When the NIC receives a packet, it will DMA that packet to a host receive packet data buffer pointed to by the
available receive buffer descriptor (see Section 5: “Receive Data Flow,” on page 88). Earlier the NIC will have
received ownership of that data buffer via an update of the producer index of receive producer ring. After the
controller does the packet data write DMA, it will DMA a corresponding buffer descriptor into the appropriate
receive return ring. The buffer descriptor that is returned in the receive return ring will be slightly modified from
the original buffer descriptor that the controller fetched out of the receive producer ring. After the controller has
completed the DMA of the receive return ring descriptor, the controller will update its internal copy of the
producer index for that particular receive return ring. That new value for that receive return ring producer index
will be included in the next status block update that is made to the host. The updated value of receive return ring
producer index in status block will be used by host software in determining whether new packets have been
received.
Receive Buffer Descriptors
The format of Standard Receive Buffer Descriptors (in both producer ring and return rings) is shown in Table 11.
The fields are defined as follows:
• Host Address—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.
• Length—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.
Table 10: Receive Return Rings
Description BCM5718 Family
Number of Rings 4
Buffer Descriptor Size (bytes) 32
Host Ring Size (# of Buffer Descriptors) Can be configured for 32 or 64 or 128 or 256 or 512 or
1024 or 208 or 4096
NIC Cache Size (# of Buffer Descriptors) 0
Table 11: Receive Descriptors Format
Offset (bytes) 3116 150
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