Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) #!/bin/bash
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) # SPDX-License-Identifier: GPL-2.0
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4) # Multiqueue: Using pktgen threads for sending on multiple CPUs
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5) #  * adding devices to kernel threads
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6) #  * notice the naming scheme for keeping device names unique
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) #  * nameing scheme: dev@thread_number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #  * flow variation via random UDP source port
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) basedir=`dirname $0`
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) source ${basedir}/functions.sh
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) root_check_run_with_sudo "$@"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) #
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) # Required param: -i dev in $DEV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) source ${basedir}/parameters.sh
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) [ -z "$COUNT" ] && COUNT="100000" # Zero means indefinitely
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) # Base Config
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) DELAY="0"        # Zero means max speed
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) [ -z "$CLONE_SKB" ] && CLONE_SKB="0"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) # Flow variation random source port between min and max
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) UDP_SRC_MIN=9
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) UDP_SRC_MAX=109
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) # (example of setting default params in your script)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) if [ -z "$DEST_IP" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29)     [ -z "$IP6" ] && DEST_IP="198.18.0.42" || DEST_IP="FD00::1"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) [ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) if [ -n "$DEST_IP" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)     validate_addr${IP6} $DEST_IP
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34)     read -r DST_MIN DST_MAX <<< $(parse_addr${IP6} $DEST_IP)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) if [ -n "$DST_PORT" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37)     read -r UDP_DST_MIN UDP_DST_MAX <<< $(parse_ports $DST_PORT)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38)     validate_ports $UDP_DST_MIN $UDP_DST_MAX
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) # General cleanup everything since last run
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) pg_ctrl "reset"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) # Threads are specified with parameter -t value in $THREADS
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 45) for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 46)     # The device name is extended with @name, using thread number to
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 47)     # make then unique, but any name will do.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 48)     dev=${DEV}@${thread}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 49) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 50)     # Add remove all other devices and add_device $dev to thread
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 51)     pg_thread $thread "rem_device_all"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 52)     pg_thread $thread "add_device" $dev
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 53) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 54)     # Notice config queue to map to cpu (mirrors smp_processor_id())
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 55)     # It is beneficial to map IRQ /proc/irq/*/smp_affinity 1:1 to CPU number
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 56)     pg_set $dev "flag QUEUE_MAP_CPU"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 57) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 58)     # Base config of dev
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 59)     pg_set $dev "count $COUNT"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 60)     pg_set $dev "clone_skb $CLONE_SKB"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 61)     pg_set $dev "pkt_size $PKT_SIZE"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 62)     pg_set $dev "delay $DELAY"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 63) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 64)     # Flag example disabling timestamping
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 65)     pg_set $dev "flag NO_TIMESTAMP"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 67)     # Destination
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 68)     pg_set $dev "dst_mac $DST_MAC"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 69)     pg_set $dev "dst${IP6}_min $DST_MIN"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 70)     pg_set $dev "dst${IP6}_max $DST_MAX"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 71) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 72)     if [ -n "$DST_PORT" ]; then
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 73) 	# Single destination port or random port range
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 74) 	pg_set $dev "flag UDPDST_RND"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 75) 	pg_set $dev "udp_dst_min $UDP_DST_MIN"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 76) 	pg_set $dev "udp_dst_max $UDP_DST_MAX"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 77)     fi
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 78) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 79)     # Setup random UDP port src range
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 80)     pg_set $dev "flag UDPSRC_RND"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 81)     pg_set $dev "udp_src_min $UDP_SRC_MIN"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 82)     pg_set $dev "udp_src_max $UDP_SRC_MAX"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 83) done
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 85) # start_run
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 86) echo "Running... ctrl^C to stop" >&2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 87) pg_ctrl "start"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 88) echo "Done" >&2
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 89) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 90) # Print results
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 91) for ((thread = $F_THREAD; thread <= $L_THREAD; thread++)); do
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 92)     dev=${DEV}@${thread}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 93)     echo "Device: $dev"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 94)     cat /proc/net/pktgen/$dev | grep -A2 "Result:"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 95) done