Multi Channel DMA Intel® FPGA IP for PCI Express User Guide

ID 683821
Date 2/11/2023

A newer version of this document is available. Customers should click here to go to the newest version.

Document Table of Contents Channel Management

Each network device associated with one physical or virtual function and can support upto 512 channels. As part of network device (ifc_mcdma<i>) bringup, all channels of that device are initialized and enabled. Whenever a packet arrives from application, one of the Tx queues are selected to transfer it.

Strategies for Queue Selection

  1. Linux default queue selection: In this case, queue is selected based on logic provided by Linux multi-queue support feature.
  2. XPS (Transmit Packet Steering): This technique is part of the Linux kernel & provides a mechanism to map multiple cores to a Tx queue of the device. For all packets coming from any of these cores, the mapped Tx queue will be used for transfer. For more information, refer to XPS: Transmit Packet Steering.
  3. MCDMA custom queue selection: This technique provides a mechanism to map multiple queues to each core. For each core, a separate list is managed to keep track of every flow of transfer coming to the core. This is done using 4 touple hash over IP and TCP addresses of each packet and the Tx the queue allocated for that flow.

On receival of a Tx packet from upper layers, a lookup on this table is done using the hash of that packet. If a match is found the corresponsing queue is used for transfer. Otherwise a new queue is allocated to this new flow.