Jumbo Frames
BCM5718 Programmer’s Guide
Broadcom
®
January 29, 2016 • 5718-PG108-R
Page 126
Figure 26: Send Driver Interface
Receive Interface
As mentioned previously, the receive side has added another producer ring called the jumbo producer ring. This
means the driver maintains two buffer descriptor rings (receive producer rings) that provide free data buffer
space into which the controller can place received frame data. The production of receive-side buffers by the
driver is communicated to the device via the rEceive Producer Ring Index(s) Mailbox registers. An update of a
receive BD ring producer index mailbox triggers the device to begin DMA of the corresponding buffer
descriptor(s). The consumption of receive side buffers by the device is communicated to the driver via the
receive consumer index, which is returned via the status block and periodically DMAed to the host by the
controller.
The controller fetches RX BDs in anticipation of RX frames and caches the BDs in the controller. The cached
BDs are stored in the Misc BD Memory. There is a set of rules that govern placement of packets in buffers:
• All standard sized frames, that is, frames less than or equal to the Max Frame Size field of the standard
RCB, typically 1522 bytes or less, are placed in buffers retrieved from the RX standard producer ring.
• Hence the host must ensure that buffers pointed to by the standard BDs are at least of that size.
• In case the host creates a standard ring buffer that is smaller than Max Frame Size and an RX frame larger
than the buffer size (but <= Max Frame Size) arrives, the controller attempts to place the frame in such a
buffer and ends up truncating the frame.
• RX frames larger than Max Frame Size are placed in buffers retrieved from the RX jumbo producer ring.
Host Memory
Host Buffer n ( <= 9622B)
Send Host BD
Send Ring Control
Block
1st
Host Ring Address
max_len
Unused
0
31
flags
Host Send Ring
Note: The RCB's host ring address field points to the first
element of the Ring in the host.
Cons
Prod
Status Word
Status Tag
RX Std Cons
0
31
Status Block
Rcv Return #1
TX Cons Index
0
63
Mailbox Registers
TX Host Ring Prod Index
Status Block (24 bytes)
The Status block resides in the NIC memory space
and is periodically DMA'd to the host whenever
the TX/RX coalescing timers expire, or whenever
the RX/TX max coalesced frames thresholds are
met. SW can examine the TX consumer indices in
the status block to determine which packets have
been sent by the HW.
The mailbox registers reside on-chip starting at offset
0x5800. Each mailbox register is 64 bits wide. Wrting the
lower 32 bits, triggers and event in the HW. SW updates the
TX Host Ring producer index to indicate that that there are
buffer descriptors ready for the HW to process.
Host Address
length
rsvd for firmware
0
31
Send Buffer Descriptor
flags
VLAN tag
Data Structures in the host
Data Structures kept on-chip
Send Host BD
RC
B p
oin
ts
to
a r
ing
in
ho
st
me
mo
ry
TX Host Ring Prod Index
references a specific BD in the
ring
Rcv Return #3
Rcv Return #2
Rcv Return #0
RX Jumbo Cons
Resvd
Host Buffer n+1
TX
C
o
ns
In
de
x r
e
fe
re
n
ce
s
a s
p
ec
if
ic
B
D
in
t
h
e
r
in
g
The BCM5718 family supports only host Send Buffer
descriptors. The transmit ring is located in the host (as
shown below), and the device will keep a local (not
shown) copy of the ring.