-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
net: samples: pktgen mode samples/tests for qdisc layer
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
John Fastabend
authored and
David S. Miller
committed
Jul 4, 2016
1 parent
0967f24
commit 6fd980a
Showing
1 changed file
with
66 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |