I am working with LS1046ARDB Evaluation Board to develop a network based application. I have started my project with Flex-builder(flexbuild_lsdk2108), Flex-installer(version: 1.13.2108) and Codewarrior IDE.
In my case LS1046ARDB device should act as network device such as switches(L2) and routers(L3) plus security device. Security operations are encryption, decryption and authentication on L2 frames and L3 datas. I have started with DPDK version 20.11 which is provided in LSDKUG21.08 by default. I was able to make a data plane application by using DPDK. At the same time i need a control plane application to make the data plane to be automatic(key's used for data plane in L2, L3 should exchange with remote LS1046ARDB device). I found this document from nxp community -> https://community.nxp.com/t5/Layerscape-Knowledge-Base/Data-Path-Development-Kit-on-Layerscape-platf...
There are three methods proposed in the above document.
Method 1: Using DPDK KNI application
Method 2: DPAA2 support HW (WRIOP) based traffic splitting with different logical ethernet interfaces.
Method 3: DPAA support HW (FMAN) – Virtual based traffic splitting with different interfaces.\
I am using LS1046ARDB, so only method 1 and 3 are available for me due to DPAA.
I have analyzed both the method 1 and 3. I have tested the method 1 by running the KNI DPDK application, it will create a virtual interface on linux networking. But i can't go with this method, i need to run the DPDK l2fwd-crypto application so i can't run multiprocess application in DPDK. The solution is to integrate the KNI DPDK code into l2fwd-crypto DPDK, but this is difficult for me because i am fresher in DPDK.
I have approached method 3 which is the configuration changed required to run this method. I tested this method also, it is working but not expected. I have a query related to this method. Here i have posted my work below with my query, guide me to achieve the control plane application with data plane(DPDK).
I have download the images from https://lsdk.github.io/components.html
boot_LS -> wget https://www.nxp.com/lgfiles/sdk/lsdk2108/boot_LS_arm64_lts_5.10.tgz
firmware image -> wget https://www.nxp.com/lgfiles/sdk/lsdk2108/firmware_ls1046ardb_sdboot.img
Rootfs -> wget https://www.nxp.com/lgfiles/sdk/lsdk2108/rootfs_lsdk2108_ubuntu_main_arm64.tgz
I have depolyed the image's in SD card through flex-installer:
$ flex-installer -i pf -d /dev/sdx (partition and format the target storage device)
$ sudo flex-installer -b boot_LS_arm64_lts_5.10.tgz -r rootfs_lsdk2108_ubuntu_main_arm64.tgz -f firmware_ls1046ardb_sdboot.img -d /dev/sdx
I have booted the board using SD card, by default caam driver is not enabled in linux kernel it was builded as a module.
In Bootloader i have updated the device-tree as per LSDKUG_21.08


As per the document i have done all the setting and it was working fine. I was able to receive UDP/ESP traffic in DPDK(l2fwd) and rest of all traffic in kernel.
Here the issue was whenever i am running the l2fwd-crypto application this method is leads to failure. Once the plain packet is received into the l2fwd-crypto application means it will do the encryption and send it to outside. The encrypted packet is given to another l2fwd-crypto with the same method, this leads to Segmentation fault. The Virtual stroage profile will not able to handle the encrypted packet. If i send the encrypted TCP packet to kernel means, it also won't received this is verified by tcpdump.
I have debugged the each bytes in the encrypted packet, issue is due to UDP packet length because it is encrypted, due to this VSP channels are not working properly, not able to send the frame to top leves(DPDK user/Kernel).
Please provide me a required details to overcome this issue.
Thanks in advance.