~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/net/udpgro_frglist.sh

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #!/bin/bash
  2 # SPDX-License-Identifier: GPL-2.0
  3 #
  4 # Run a series of udpgro benchmarks
  5 
  6 source net_helper.sh
  7 
  8 readonly PEER_NS="ns-peer-$(mktemp -u XXXXXX)"
  9 
 10 BPF_FILE="xdp_dummy.bpf.o"
 11 
 12 cleanup() {
 13         local -r jobs="$(jobs -p)"
 14         local -r ns="$(ip netns list|grep $PEER_NS)"
 15 
 16         [ -n "${jobs}" ] && kill -INT ${jobs} 2>/dev/null
 17         [ -n "$ns" ] && ip netns del $ns 2>/dev/null
 18 }
 19 trap cleanup EXIT
 20 
 21 run_one() {
 22         # use 'rx' as separator between sender args and receiver args
 23         local -r all="$@"
 24         local -r tx_args=${all%rx*}
 25         local rx_args=${all#*rx}
 26 
 27 
 28 
 29         ip netns add "${PEER_NS}"
 30         ip -netns "${PEER_NS}" link set lo up
 31         ip link add type veth
 32         ip link set dev veth0 up
 33         ip addr add dev veth0 192.168.1.2/24
 34         ip addr add dev veth0 2001:db8::2/64 nodad
 35 
 36         ip link set dev veth1 netns "${PEER_NS}"
 37         ip -netns "${PEER_NS}" addr add dev veth1 192.168.1.1/24
 38         ip -netns "${PEER_NS}" addr add dev veth1 2001:db8::1/64 nodad
 39         ip -netns "${PEER_NS}" link set dev veth1 up
 40         ip netns exec "${PEER_NS}" ethtool -K veth1 rx-gro-list on
 41 
 42 
 43         ip -n "${PEER_NS}" link set veth1 xdp object ${BPF_FILE} section xdp
 44         tc -n "${PEER_NS}" qdisc add dev veth1 clsact
 45         tc -n "${PEER_NS}" filter add dev veth1 ingress prio 4 protocol ipv6 bpf object-file nat6to4.bpf.o section schedcls/ingress6/nat_6  direct-action
 46         tc -n "${PEER_NS}" filter add dev veth1 egress prio 4 protocol ip bpf object-file nat6to4.bpf.o section schedcls/egress4/snat4 direct-action
 47         echo ${rx_args}
 48         ip netns exec "${PEER_NS}" ./udpgso_bench_rx ${rx_args} -r &
 49 
 50         wait_local_port_listen "${PEER_NS}" 8000 udp
 51         ./udpgso_bench_tx ${tx_args}
 52 }
 53 
 54 run_in_netns() {
 55         local -r args=$@
 56   echo ${args}
 57         ./in_netns.sh $0 __subprocess ${args}
 58 }
 59 
 60 run_udp() {
 61         local -r args=$@
 62 
 63         echo "udp gso - over veth touching data"
 64         run_in_netns ${args} -u -S 0 rx -4 -v
 65 
 66         echo "udp gso and gro - over veth touching data"
 67         run_in_netns ${args} -S 0 rx -4 -G
 68 }
 69 
 70 run_tcp() {
 71         local -r args=$@
 72 
 73         echo "tcp - over veth touching data"
 74         run_in_netns ${args} -t rx -4 -t
 75 }
 76 
 77 run_all() {
 78         local -r core_args="-l 4"
 79         local -r ipv4_args="${core_args} -4  -D 192.168.1.1"
 80         local -r ipv6_args="${core_args} -6  -D 2001:db8::1"
 81 
 82         echo "ipv6"
 83         run_tcp "${ipv6_args}"
 84         run_udp "${ipv6_args}"
 85 }
 86 
 87 if [ ! -f ${BPF_FILE} ]; then
 88         echo "Missing ${BPF_FILE}. Run 'make' first"
 89         exit -1
 90 fi
 91 
 92 if [ ! -f nat6to4.bpf.o ]; then
 93         echo "Missing nat6to4 helper. Run 'make' first"
 94         exit -1
 95 fi
 96 
 97 if [[ $# -eq 0 ]]; then
 98         run_all
 99 elif [[ $1 == "__subprocess" ]]; then
100         shift
101         run_one $@
102 else
103         run_in_netns $@
104 fi

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php