set -x
+# set arch, default to x86_64 if none given
+ARCH=${1:-"x86_64"}
+
+# dpdk prefers "arm64" to "aarch64" and does not allow arm64 native target
+if [ $ARCH == "aarch64" ]; then
+ ARCH="arm64"
+ MACHINE="armv8a"
+else
+ MACHINE="native"
+fi
+
ROOTDIR=/tmp/TLDK-testing
PWDDIR=$(pwd)
echo $IPv4_addr
-#kill the l4fwd
-sudo killall -9 l4fwd 2>/dev/null
-
-sleep 2
-
-pid=`pgrep l4fwd`
-if [ "$pid" != "" ]; then
- echo "terminate the l4fwd failed!"
- exit 1
+# Try to kill the l4fwd
+sudo pgrep l4fwd
+if [ $? -eq "0" ]; then
+ success=false
+ sudo pkill l4fwd
+ echo "RC = $?"
+ for attempt in {1..5}; do
+ echo "Checking if l4fwd is still alive, attempt nr ${attempt}"
+ sudo pgrep l4fwd
+ if [ $? -eq "1" ]; then
+ echo "l4fwd is dead"
+ success=true
+ break
+ fi
+ echo "l4fwd is still alive, waiting 1 second"
+ sleep 1
+ done
+ if [ "$success" = false ]; then
+ echo "The command sudo pkill l4fwd failed"
+ sudo pkill -9 l4fwd
+ echo "RC = $?"
+ exit 1
+ fi
+else
+ echo "l4fwd is not running"
fi
#mount the hugepages again
# need to install libpcap, libpcap-dev to use --vdev
cd ${ROOTDIR}
if [ "$IPv6_addr" == "NONE" ]; then
-sudo sh -c "nohup ./tldk/x86_64-native-linuxapp-gcc/app/l4fwd --lcore='0' \
+sudo sh -c "nohup ./tldk/${ARCH}-${MACHINE}-linuxapp-gcc/app/l4fwd --lcore='0' \
-n 2 --vdev 'eth_pcap1,rx_pcap=${rx_file},tx_pcap=${tx_file}' \
-b ${nic_pci} -- -P -U -R 0x1000 -S 0x1000 -s 0x20 -f ${fe_cfg} -b ${be_cfg} \
port=0,lcore=0,rx_offload=0,tx_offload=0,ipv4=${IPv4_addr} &"
elif [ "$IPv4_addr" == "NONE" ]; then
-sudo sh -c "nohup ./tldk/x86_64-native-linuxapp-gcc/app/l4fwd --lcore='0' \
+sudo sh -c "nohup ./tldk/${ARCH}-${MACHINE}-linuxapp-gcc/app/l4fwd --lcore='0' \
-n 2 --vdev 'eth_pcap1,rx_pcap=${rx_file},tx_pcap=${tx_file}' \
-b ${nic_pci} -- -P -U -R 0x1000 -S 0x1000 -s 0x20 -f ${fe_cfg} -b ${be_cfg} \
port=0,lcore=0,rx_offload=0,tx_offload=0,ipv6=${IPv6_addr} &"
cd ${PWDDIR}
+ps -elf | grep l4fwd
+
sleep 10