1a8905257SWeqaar Janjua#!/bin/bash
2a8905257SWeqaar Janjua# SPDX-License-Identifier: GPL-2.0
3a8905257SWeqaar Janjua# Copyright(c) 2020 Intel Corporation.
4a8905257SWeqaar Janjua
5a8905257SWeqaar Janjuaksft_pass=0
6a8905257SWeqaar Janjuaksft_fail=1
7a8905257SWeqaar Janjuaksft_xfail=2
8a8905257SWeqaar Janjuaksft_xpass=3
9a8905257SWeqaar Janjuaksft_skip=4
10a8905257SWeqaar Janjua
11018a8e75SMaciej FijalkowskiXSKOBJ=xskxceiver
12a8905257SWeqaar Janjua
13a8905257SWeqaar Janjuavalidate_root_exec()
14a8905257SWeqaar Janjua{
15a8905257SWeqaar Janjua	msg="skip all tests:"
16a8905257SWeqaar Janjua	if [ $UID != 0 ]; then
17a8905257SWeqaar Janjua		echo $msg must be run as root >&2
18895b62eeSMagnus Karlsson		test_exit $ksft_fail
19a8905257SWeqaar Janjua	else
20a8905257SWeqaar Janjua		return $ksft_pass
21a8905257SWeqaar Janjua	fi
22a8905257SWeqaar Janjua}
23a8905257SWeqaar Janjua
24a8905257SWeqaar Janjuavalidate_veth_support()
25a8905257SWeqaar Janjua{
26a8905257SWeqaar Janjua	msg="skip all tests:"
27a8905257SWeqaar Janjua	if [ $(ip link add $1 type veth 2>/dev/null; echo $?;) != 0 ]; then
28a8905257SWeqaar Janjua		echo $msg veth kernel support not available >&2
29895b62eeSMagnus Karlsson		test_exit $ksft_skip
30a8905257SWeqaar Janjua	else
31a8905257SWeqaar Janjua		ip link del $1
32a8905257SWeqaar Janjua		return $ksft_pass
33a8905257SWeqaar Janjua	fi
34a8905257SWeqaar Janjua}
35a8905257SWeqaar Janjua
36a8905257SWeqaar Janjuatest_status()
37a8905257SWeqaar Janjua{
38a8905257SWeqaar Janjua	statusval=$1
39895b62eeSMagnus Karlsson	if [ $statusval -eq $ksft_fail ]; then
40895b62eeSMagnus Karlsson		echo "$2: [ FAIL ]"
41895b62eeSMagnus Karlsson	elif [ $statusval -eq $ksft_skip ]; then
42895b62eeSMagnus Karlsson		echo "$2: [ SKIPPED ]"
43895b62eeSMagnus Karlsson	elif [ $statusval -eq $ksft_pass ]; then
44895b62eeSMagnus Karlsson		echo "$2: [ PASS ]"
45a8905257SWeqaar Janjua	fi
46a8905257SWeqaar Janjua}
47a8905257SWeqaar Janjua
48a8905257SWeqaar Janjuatest_exit()
49a8905257SWeqaar Janjua{
50895b62eeSMagnus Karlsson	if [ $1 -ne 0 ]; then
51895b62eeSMagnus Karlsson		test_status $1 $(basename $0)
52a8905257SWeqaar Janjua	fi
53895b62eeSMagnus Karlsson	exit 1
54a8905257SWeqaar Janjua}
55a8905257SWeqaar Janjua
56*3666bccaSMaciej Fijalkowskicleanup_iface()
57*3666bccaSMaciej Fijalkowski{
58*3666bccaSMaciej Fijalkowski	ip link set $1 mtu $2
59*3666bccaSMaciej Fijalkowski	ip link set $1 xdp off
60*3666bccaSMaciej Fijalkowski	ip link set $1 xdpgeneric off
61*3666bccaSMaciej Fijalkowski}
62*3666bccaSMaciej Fijalkowski
63a8905257SWeqaar Janjuaclear_configs()
64a8905257SWeqaar Janjua{
65a8905257SWeqaar Janjua	[ $(ip link show $1 &>/dev/null; echo $?;) == 0 ] &&
66ecde6061SMagnus Karlsson		{ ip link del $1; }
67a8905257SWeqaar Janjua}
68a8905257SWeqaar Janjua
69a8905257SWeqaar Janjuacleanup_exit()
70a8905257SWeqaar Janjua{
7164aef77dSMagnus Karlsson	clear_configs $1 $2
72a8905257SWeqaar Janjua}
73a8905257SWeqaar Janjua
74a8905257SWeqaar Janjuavalidate_ip_utility()
75a8905257SWeqaar Janjua{
76895b62eeSMagnus Karlsson	[ ! $(type -P ip) ] && { echo "'ip' not found. Skipping tests."; test_exit $ksft_skip; }
77a8905257SWeqaar Janjua}
78a8905257SWeqaar Janjua
79018a8e75SMaciej Fijalkowskiexec_xskxceiver()
80facb7cb2SWeqaar Janjua{
81f90062b5SMagnus Karlsson        if [[ $busy_poll -eq 1 ]]; then
82f90062b5SMagnus Karlsson	        ARGS+="-b "
83f90062b5SMagnus Karlsson	fi
84f90062b5SMagnus Karlsson
8564aef77dSMagnus Karlsson	./${XSKOBJ} -i ${VETH0} -i ${VETH1} ${ARGS}
86895b62eeSMagnus Karlsson
87895b62eeSMagnus Karlsson	retval=$?
88895b62eeSMagnus Karlsson	test_status $retval "${TEST_NAME}"
89895b62eeSMagnus Karlsson	statusList+=($retval)
90895b62eeSMagnus Karlsson	nameList+=(${TEST_NAME})
91facb7cb2SWeqaar Janjua}
92