Hello,
We have a custom board based on P4080DS. We have built the image using QorIQ Linux SDK. During our testing of the Ethernet functionality using iperf, we have observed that some of the packets are being received out of order. The count of out-of-order packets is increasing with higher bandwidth.
I have attached the bootlog.
Thanks in advance,
Cem.
You could use core-affined queue to implement order preservation, please use one of the following default FMC policy files.
/etc/fmc/config/private/p4080ds/*/policy_ipv4.xml
/etc/fmc/config/private/p4080ds/*/policy_ipv6.xml
Please execute FMC commands as the following before all networking related operation.
# fmc -c /etc/fmc/config/private/p4080ds/N_RRRSS_0x16/config.xml -p /etc/fmc/config/private/p4080ds/N_RRRSS_0x16/policy_ipv4.xml -a
This is because in DPAA1, each interface used by default one pool channel across all software portals and also the dedicated channel of each CPU. In Linux Kernel, PCD Frame queues in use dedicated channels. You could refer to
the section "5. Dedicated and Pool Channels Usage in Linux Kernel" in Using QMAN Dedicated and Pool Channels in USDPAA and Linux Kernel .
You need to use multiple flows, after executing FMC policy, one flow will bind to one core, so all 4 cores will be used by multiple flows. In the real scenario, one user application uses one flow.
Isn't that just how UDP works? This is the second paragraph of the introduction to RFC 768:
This protocol provides a procedure for application programs to send
messages to other programs with a minimum of protocol mechanism. The
protocol is transaction oriented, and delivery and duplicate protection
are not guaranteed. Applications requiring ordered reliable delivery of
streams of data should use the Transmission Control Protocol (TCP)
(emphasis mine)