NXP layerscape LS1046ARDB DPDK single core

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

NXP layerscape LS1046ARDB DPDK single core

4,486 次查看
nagurvalisayyad
Contributor I

Hi,

   We are using Layerscape LS1046ARDB evaluation kit in DPDK mode. In this DPDK, we want to use the single core with two physical ethernet ports. Our application is TCP proxy. We have taken the dpdk-l2fwd example code as reference and developed the our application upon that. To run the code, we have used the following command: 

./dpdk-l2fwd -c 0x8 -n 1 -- -p 0x3 -q 2 -T 0

With the above command, we could able to run the application and could able to do the proxy functionalities with some issues. The issue is that, the burst of packets(around 15) sent on port 2 using the command rte_eth_tx_burst() are dropping(out of 15 last 5 packets are dropped). Just to verify the packet integrity, we were sending the dropped packets in port 1 also in addition to the actual port 2. The PC connected at port 1 is showing the packets. With this we are assuming that, there is no problem of packet integrity. Since TCP is ack based, retransmissions are happening and application is running, but due to losses we are getting the verly less throuhput.What is the possible reason for packets to be dropped on port 2.

In the above command, we have given number of queues(-q 2). If we give the single queue, the program is exit with the error message. But we are not using two queues in our code. We are using only the single queue. Please help us in resolving the problem.

0 项奖励
回复
7 回复数

4,387 次查看
nagurvalisayyad
Contributor I

Hi,

   Thanks for the reply. Now we could able to run our application with out any packet drops and we are getting the required throughput also.

But we are facing one problem. We are doing the file transfer, around 10 sessions are running simultaneously. After the all session completion, if we compare the files received with the files transferred, some times there is mismatch in the file content of around 1 to 1500 bytes(varying). To findout the problem, we sent the fixed bytes(0x11) in the content and printing the packet, when the packet content is mismatched with the fixed byte.

We found that, sometimes, the packet received using rte_eth_rx_burst() is showing the mismatched content. But the sender PC shown the correct content in the wireshark. How the rx function is malfunctioning? The snapshot of data print is attached for two instances.

The hardware ol flags showing the L4 checksum match but the rte_mbuf packet length and data length are not matching withe ipv4 total length. Please help us in resolving this issue.

0 项奖励
回复

4,307 次查看
yipingwang
NXP TechSupport
NXP TechSupport

Which LSDK version did customer use?
As the customer's description, I suspect there is a L3/L4 checksum issue for length of packet is mismatch.

0 项奖励
回复

4,260 次查看
nagurvalisayyad
Contributor I

Hi,

   The LSDK version is "NXP LSDK 2108 main(custom based on ubuntu 20.04)". In order to suspect the L3/L4 checksum, the receiver ol flags showing the correct checksum. In the attachement, the flags received is also shown.

0 项奖励
回复

4,184 次查看
yipingwang
NXP TechSupport
NXP TechSupport

It seems that you are using your own application.
Could you please reproduce the issue with standard dpdk application, such as l3fwd?

0 项奖励
回复

4,450 次查看
yipingwang
NXP TechSupport
NXP TechSupport

dpdk-l2fwd is just a example, the number of core should be same as number of ports.
Due to the customer refer to dpdk-l2fwd and got the issues.
Please refer to port_fwd application from upstream dpdk in below link.
https://github.com/NXP/dpdk/tree/21.11-qoriq/examples/port_fwd

0 项奖励
回复

4,447 次查看
nagurvalisayyad
Contributor I

Hi,

    What is the problem of using two ports with the single core? I am not clear about the combination of cores, ports and queues. Can you please explain or suggest any application note to get clear understanding.

Thanks--

Nagurvali Sayyad.

0 项奖励
回复

4,435 次查看
yipingwang
NXP TechSupport
NXP TechSupport

If used single core for two ports with l2fwd, such as "dpdk-l2fwd -v -c 0x8 -n 1 -- -p 0x3", the application will exit with errors.
Lcore 3: RX port 0 TX port 1
EAL: Error - exiting with code: 1
Cause: Not enough cores

please also refer to below code
/* get the lcore_id for this port */
while (rte_lcore_is_enabled(rx_lcore_id) == 0 ||
lcore_queue_conf[rx_lcore_id].n_rx_port ==
l2fwd_rx_queue_per_lcore) {
rx_lcore_id++;
if (rx_lcore_id >= RTE_MAX_LCORE)
rte_exit(EXIT_FAILURE, "Not enough cores\n");
}

So please refer to l3fwd.


port_fwd application (already provided link in github) supported single core for two ports.

0 项奖励
回复