Host Coalescing Control Registers
BCM5718 Programmer’s Guide
Broadcom
®
January 29, 2016 • 5718-PG108-R
Page 415
Receive Coalescing Ticks Register for VRQ 10 => 0x3E58
Receive Coalescing Ticks Register for VRQ 11 => 0x3E70
Receive Coalescing Ticks Register for VRQ 12 => 0x3E88
Receive Coalescing Ticks Register for VRQ 13 => 0x3EA0
Receive Coalescing Ticks Register for VRQ 14 => 0x3EB8
Receive Coalescing Ticks Register for VRQ 15 => 0x3ED0
Receive Coalescing Ticks Register for VRQ 16 => 0x3EE8
Send Coalescing Ticks Register (offset: 0x3C0C)
The value in this register can be used to control how often the status block is updated (and how often interrupts
are generated) according to the completion of transmit events. The value in this register controls how many
ticks, in units of 1 µs each, get loaded in an internal transmit tick timer register. The timer will be reset to the
value of this register and will start counting down, after every status block update (regardless of the reason for
the status block update). The timer is only reset after status block updates, and is not reset after a transmit event
completes. When the timer reaches 0, it will be considered to be in the expired state. Once the counter is in the
expired state, a status block update will occur if a transmit event has occurred since the last status block update.
In this case, a transmit event is defined by an update to one of the device's Send BD Consumer Indices. It should
be noted that a Send Consumer Index increments whenever the data associated with a particular packet has
been successfully moved (via DMA) across the bus, rather than when the packet is actually transmitted over the
Ethernet wire.
This register must be initialized by host software. A value of 0 in this register disables the transmit tick coalescing
logic. In this case, status block updates will occur for transmit events only if the Send Max Coalesced BD value
is reached, or if the BD_FLAG_COAL_NOW bit is set in a send BD. Status block updates for other reasons (e.g.,
receive events) will also include any updates to the send indices. By setting the value in this register to a high
number, a software device driver can reduce the number of status block updates, and interrupts, that occur due
to transmit completions. This will generally increase performance in hosts that do not require their send buffers
to be freed quickly. For host environments that do require their send buffers to be recovered quickly, it is
recommended that this register be set to 0.