Skip to content

Commit

Permalink
net: samples: pktgen mode samples/tests for qdisc layer
Browse files Browse the repository at this point in the history
This adds samples for pktgen to use with new mode to inject pkts into
the qdisc layer. This also doubles as nice test cases to test any
patches against qdisc layer.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
jrfastab authored and davem330 committed Jul 4, 2016
1 parent 0967f24 commit 6fd980a
Showing 1 changed file with 66 additions and 0 deletions.
66 changes: 66 additions & 0 deletions samples/pktgen/pktgen_bench_xmit_mode_queue_xmit.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
#!/bin/bash
#
# Benchmark script:
# - developed for benchmarking egress qdisc path, derived (more
# like cut'n'pasted) from ingress benchmark script.
#
# Script for injecting packets into egress qdisc path of the stack
# with pktgen "xmit_mode queue_xmit".
#
basedir=`dirname $0`
source ${basedir}/functions.sh
root_check_run_with_sudo "$@"

# Parameter parsing via include
source ${basedir}/parameters.sh
[ -z "$DEST_IP" ] && DEST_IP="198.18.0.42"
[ -z "$DST_MAC" ] && DST_MAC="90:e2:ba:ff:ff:ff"

# Burst greater than 1 are invalid for queue_xmit mode
if [[ -n "$BURST" ]]; then
err 1 "Bursting not supported for this mode"
fi

# Base Config
DELAY="0" # Zero means max speed
COUNT="10000000" # Zero means indefinitely

# General cleanup everything since last run
pg_ctrl "reset"

# Threads are specified with parameter -t value in $THREADS
for ((thread = 0; thread < $THREADS; thread++)); do
# The device name is extended with @name, using thread number to
# make then unique, but any name will do.
dev=${DEV}@${thread}

# Add remove all other devices and add_device $dev to thread
pg_thread $thread "rem_device_all"
pg_thread $thread "add_device" $dev

# Base config of dev
pg_set $dev "flag QUEUE_MAP_CPU"
pg_set $dev "count $COUNT"
pg_set $dev "pkt_size $PKT_SIZE"
pg_set $dev "delay $DELAY"
pg_set $dev "flag NO_TIMESTAMP"

# Destination
pg_set $dev "dst_mac $DST_MAC"
pg_set $dev "dst $DEST_IP"

# Inject packet into TX qdisc egress path of stack
pg_set $dev "xmit_mode queue_xmit"
done

# start_run
echo "Running... ctrl^C to stop" >&2
pg_ctrl "start"
echo "Done" >&2

# Print results
for ((thread = 0; thread < $THREADS; thread++)); do
dev=${DEV}@${thread}
echo "Device: $dev"
cat /proc/net/pktgen/$dev | grep -A2 "Result:"
done

0 comments on commit 6fd980a

Please sign in to comment.