184.108.40.206. 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
- Linux default queue selection: In this case, queue is selected based on logic provided by Linux multi-queue support feature.
- 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.
- 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.