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

ID 683821
Date 1/29/2024
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.