Hello Sedat Altun ,
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.
You could enable DCA mode when invoke qman_enqueue with DCA related flags specified in Linux Kernel driver.
#define QMAN_ENQUEUE_FLAG_DCA 0x00008000 /* perform enqueue-DCA */
#define QMAN_ENQUEUE_FLAG_DCA_PARK 0x00004000 /* If DCA, requests park */
#define QMAN_ENQUEUE_FLAG_DCA_PTR(p) /* If DCA, p is DQRR entry */ \
(((u32)(p) << 2) & 0x00000f00)
int qman_enqueue(struct qman_fq *fq, const struct qm_fd *fd, u32 flags);
Thanks,
Yiping