Descriptor Rings
BCM5718 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
.
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