add new topology parameter: arch
[csit.git] / tests / tldk / tldk_scripts / run_tldk.sh
index 0f56f02..10ad5b2 100755 (executable)
@@ -2,6 +2,17 @@
 
 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)
 
@@ -15,15 +26,31 @@ IPv6_addr=$7
 
 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
@@ -37,12 +64,12 @@ sleep 2
 # 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} &"
@@ -50,4 +77,6 @@ fi
 
 cd ${PWDDIR}
 
+ps -elf | grep l4fwd
+
 sleep 10