DPAA QMAN Order Restoration

We are using DPAA drivers on t4240 SoC with sdk 2.0 for a network device like a router.

Our problem is the difference between ingress and egress packet order. They are not the same . May be this is natural due to multicore architecture of T4240. But our TCP applications are sensitive to out of order packets. As a result we get low performance like 700Mbps on a 10g port.

NXP application notes suggest us to define flows and affine each of them to a single core for suppressing order problems within a single flow. But in this solution the performance of one flow is limited by the single core. But our performance requirements are not met with using a single core for a single flow. We want all the cpu cores to handle the incoming traffic in parallel to get higher data rates.

Is there any other solution for the packet misordering problem than assigning a flow to a single core.

In DPAA Reference manuel there is a solution called Qman order restoration which is used for ordering the out of ordered packtes before sending to FMAN ports.

The FMAN PCD can be configured to either directly match a flow to a core or to use the hashing to provide traffic spreading that offer a permanent flow-to-core affinity through dedicated channel.

If you need the pool channel approach where multiple cores may pool together to service a specific set of flows.

Order is preserved as long as two or more cores never process frames from the same flow at the same time. This can also be accomplished by using hold active scheduling along with discrete consumption acknowledgment (DCA) mode associated with the DQRR. Although flow affinity may change for an FQ with hold active scheduling when the FQ is emptied, if the new work (from frames received after the FQ is emptied) is held off until all previous work completes, then the flow will not be processed by multiple cores simultaneously, thereby preserving order.