IOV – Receive Side
BCM5718 Programmer’s Guide
Broadcom
®
January 29, 2016 • 5718-PG108-R
Page 266
IOV – Receive Side
The chosen Receive-Side solution to IOV acceleration is to scale into multiple Receive Indication Queues.
These queues are called Virtual Receive Queues or VRQ as defined for NetXtreme internal use. VRQ generally
refers to an implementation of both VMQ as well as NetQueue. Each VRQ is provided with dedicated host buffer
memory resources. The reason behind this requirement involves memory protection issues with the host
platform and OS. Each such queue is also provided with programmable RX traffic filter resources called VRQ
Filters. The task of RX-EMAC is to sort the RX traffic designated for multiple VRQs based on VRQ Filter settings.
RX-EMAC marks each RX packet with a VRQ number after placing it into the RX-MBUF. Before initiating a RX
packet DMA To the host memory, the DMA engine shall inspect each packet's Frame-Header to determine which
VRQ it belongs to. It then draws Receive Buffers only from the respective VRQ's host buffer resources and
subsequently proceeds to DMA the packet to those buffers. After placing the frame in a VRQ designated host
buffer, the controller designates the RX packet selectively to the respective owner (a child/guest OS) of the VRQ
and not to any other OS images. Therefore, it implies that each VRQ shall also be associated with an
independent receive indication queue, which is nothing but an independent Receive Return Ring (refer to
for additional information.