From 98e688f4054c2e9624c8e4666b985bde5e7e1660 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 24 Feb 2015 02:31:13 +0000 Subject: [PATCH 01/10] pktgen: Delete the original date from documentation This has been updated quite a few times since 2004, and git can keep track of the actual date for us. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller --- Documentation/networking/pktgen.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/Documentation/networking/pktgen.txt b/Documentation/networking/pktgen.txt index 6915c6b278697..560c84ba9abd0 100644 --- a/Documentation/networking/pktgen.txt +++ b/Documentation/networking/pktgen.txt @@ -3,8 +3,6 @@ HOWTO for the linux packet generator ------------------------------------ -Date: 041221 - Enable CONFIG_NET_PKTGEN to compile and build pktgen.o either in kernel or as module. Module is preferred. insmod pktgen if needed. Once running pktgen creates a thread on each CPU where each thread has affinity to its CPU. From ca5b542ccee76e58407c3529f39974d382124093 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 24 Feb 2015 02:31:52 +0000 Subject: [PATCH 02/10] pktgen: Fix grammar errors and some poor wording in documentation Thanks to Rob Jones for suggesting some of the changes. Cc: Rob Jones Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller --- Documentation/networking/pktgen.txt | 56 +++++++++++++++-------------- 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/Documentation/networking/pktgen.txt b/Documentation/networking/pktgen.txt index 560c84ba9abd0..fa0ad87e6597d 100644 --- a/Documentation/networking/pktgen.txt +++ b/Documentation/networking/pktgen.txt @@ -3,11 +3,11 @@ HOWTO for the linux packet generator ------------------------------------ -Enable CONFIG_NET_PKTGEN to compile and build pktgen.o either in kernel -or as module. Module is preferred. insmod pktgen if needed. Once running -pktgen creates a thread on each CPU where each thread has affinity to its CPU. -Monitoring and controlling is done via /proc. Easiest to select a suitable -a sample script and configure. +Enable CONFIG_NET_PKTGEN to compile and build pktgen.o either in-kernel +or as a module. A module is preferred; insmod pktgen if needed. Once +running, pktgen creates a thread for each CPU with affinity to that CPU. +Monitoring and controlling is done via /proc. It is easiest to select a +suitable sample script and configure that. On a dual CPU: @@ -25,7 +25,7 @@ For monitoring and control pktgen creates: Tuning NIC for max performance ============================== -The default NIC setting are (likely) not tuned for pktgen's artificial +The default NIC settings are (likely) not tuned for pktgen's artificial overload type of benchmarking, as this could hurt the normal use-case. Specifically increasing the TX ring buffer in the NIC: @@ -33,20 +33,20 @@ Specifically increasing the TX ring buffer in the NIC: A larger TX ring can improve pktgen's performance, while it can hurt in the general case, 1) because the TX ring buffer might get larger -than the CPUs L1/L2 cache, 2) because it allow more queueing in the +than the CPU's L1/L2 cache, 2) because it allows more queueing in the NIC HW layer (which is bad for bufferbloat). -One should be careful to conclude, that packets/descriptors in the HW +One should hesitate to conclude that packets/descriptors in the HW TX ring cause delay. Drivers usually delay cleaning up the -ring-buffers (for various performance reasons), thus packets stalling -the TX ring, might just be waiting for cleanup. +ring-buffers for various performance reasons, and packets stalling +the TX ring might just be waiting for cleanup. -This cleanup issues is specifically the case, for the driver ixgbe -(Intel 82599 chip). This driver (ixgbe) combine TX+RX ring cleanups, +This cleanup issue is specifically the case for the driver ixgbe +(Intel 82599 chip). This driver (ixgbe) combines TX+RX ring cleanups, and the cleanup interval is affected by the ethtool --coalesce setting of parameter "rx-usecs". -For ixgbe use e.g "30" resulting in approx 33K interrupts/sec (1/30*10^6): +For ixgbe use e.g. "30" resulting in approx 33K interrupts/sec (1/30*10^6): # ethtool -C ethX rx-usecs 30 @@ -58,15 +58,16 @@ Running: Stopped: eth1 Result: OK: max_before_softirq=10000 -Most important the devices assigned to thread. Note! A device can only belong -to one thread. +Most important are the devices assigned to the thread. Note that a +device can only belong to one thread. Viewing devices =============== -Parm section holds configured info. Current hold running stats. -Result is printed after run or after interruption. Example: +The Params section holds configured information. The Current section +holds running statistics. The Result is printed after a run or after +interruption. Example: /proc/net/pktgen/eth1 @@ -91,7 +92,8 @@ Result: OK: 13101142(c12220741+d880401) usec, 10000000 (60byte,0frags) Configuring threads and devices ================================ -This is done via the /proc interface easiest done via pgset in the scripts +This is done via the /proc interface, and most easily done via pgset in +the scripts. Examples: @@ -193,7 +195,8 @@ Examples: Example scripts =============== -A collection of small tutorial scripts for pktgen is in examples dir. +A collection of small tutorial scripts for pktgen is in the examples +directory: pktgen.conf-1-1 # 1 CPU 1 dev pktgen.conf-1-2 # 1 CPU 2 dev @@ -204,25 +207,26 @@ pktgen.conf-1-1-ip6 # 1 CPU 1 dev ipv6 pktgen.conf-1-1-ip6-rdos # 1 CPU 1 dev ipv6 w. route DoS pktgen.conf-1-1-flows # 1 CPU 1 dev multiple flows. -Run in shell: ./pktgen.conf-X-Y It does all the setup including sending. +Run in shell: ./pktgen.conf-X-Y +This does all the setup including sending. Interrupt affinity =================== -Note when adding devices to a specific CPU there good idea to also assign -/proc/irq/XX/smp_affinity so the TX-interrupts gets bound to the same CPU. -as this reduces cache bouncing when freeing skb's. +Note that when adding devices to a specific CPU it is a good idea to +also assign /proc/irq/XX/smp_affinity so that the TX interrupts are bound +to the same CPU. This reduces cache bouncing when freeing skbs. Enable IPsec ============ -Default IPsec transformation with ESP encapsulation plus Transport mode -could be enabled by simply setting: +Default IPsec transformation with ESP encapsulation plus transport mode +can be enabled by simply setting: pgset "flag IPSEC" pgset "flows 1" To avoid breaking existing testbed scripts for using AH type and tunnel mode, -user could use "pgset spi SPI_VALUE" to specify which formal of transformation +you can use "pgset spi SPI_VALUE" to specify which transformation mode to employ. From 7c95a9d962f9ffdf02a3d82a6ae108c254a29122 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 24 Feb 2015 02:32:07 +0000 Subject: [PATCH 03/10] samples/pktgen: Add sample scripts for pktgen facility These are Robert Olsson's samples which used to be available from but currently are not. Change the documentation to refer to these consistently as 'sample scripts', matching the directory name used here. Cc: Robert Olsson Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller --- Documentation/networking/pktgen.txt | 12 ++-- samples/pktgen/pktgen.conf-1-1 | 66 ++++++++++++++++++++ samples/pktgen/pktgen.conf-1-1-flows | 74 ++++++++++++++++++++++ samples/pktgen/pktgen.conf-1-1-ip6 | 67 ++++++++++++++++++++ samples/pktgen/pktgen.conf-1-1-ip6-rdos | 70 +++++++++++++++++++++ samples/pktgen/pktgen.conf-1-1-rdos | 71 +++++++++++++++++++++ samples/pktgen/pktgen.conf-1-2 | 76 +++++++++++++++++++++++ samples/pktgen/pktgen.conf-2-1 | 72 ++++++++++++++++++++++ samples/pktgen/pktgen.conf-2-2 | 82 +++++++++++++++++++++++++ 9 files changed, 584 insertions(+), 6 deletions(-) create mode 100755 samples/pktgen/pktgen.conf-1-1 create mode 100755 samples/pktgen/pktgen.conf-1-1-flows create mode 100755 samples/pktgen/pktgen.conf-1-1-ip6 create mode 100755 samples/pktgen/pktgen.conf-1-1-ip6-rdos create mode 100755 samples/pktgen/pktgen.conf-1-1-rdos create mode 100755 samples/pktgen/pktgen.conf-1-2 create mode 100755 samples/pktgen/pktgen.conf-2-1 create mode 100755 samples/pktgen/pktgen.conf-2-2 diff --git a/Documentation/networking/pktgen.txt b/Documentation/networking/pktgen.txt index fa0ad87e6597d..24c6dc100e024 100644 --- a/Documentation/networking/pktgen.txt +++ b/Documentation/networking/pktgen.txt @@ -92,8 +92,8 @@ Result: OK: 13101142(c12220741+d880401) usec, 10000000 (60byte,0frags) Configuring threads and devices ================================ -This is done via the /proc interface, and most easily done via pgset in -the scripts. +This is done via the /proc interface, and most easily done via pgset +as defined in the sample scripts. Examples: @@ -192,11 +192,11 @@ Examples: pgset "rate 300M" set rate to 300 Mb/s pgset "ratep 1000000" set rate to 1Mpps -Example scripts -=============== +Sample scripts +============== -A collection of small tutorial scripts for pktgen is in the examples -directory: +A collection of small tutorial scripts for pktgen is in the +samples/pktgen directory: pktgen.conf-1-1 # 1 CPU 1 dev pktgen.conf-1-2 # 1 CPU 2 dev diff --git a/samples/pktgen/pktgen.conf-1-1 b/samples/pktgen/pktgen.conf-1-1 new file mode 100755 index 0000000000000..5d30f836ca3ee --- /dev/null +++ b/samples/pktgen/pktgen.conf-1-1 @@ -0,0 +1,66 @@ +#! /bin/sh + +#modprobe pktgen + + +function pgset() { + local result + + echo $1 > $PGDEV + + result=`cat $PGDEV | fgrep "Result: OK:"` + if [ "$result" = "" ]; then + cat $PGDEV | fgrep Result: + fi +} + +function pg() { + echo inject > $PGDEV + cat $PGDEV +} + +# Config Start Here ----------------------------------------------------------- + + +# thread config +# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. + +PGDEV=/proc/net/pktgen/kpktgend_0 + echo "Removing all devices" + pgset "rem_device_all" + echo "Adding eth1" + pgset "add_device eth1" + echo "Setting max_before_softirq 10000" + pgset "max_before_softirq 10000" + + +# device config +# delay 0 means maximum speed. + +CLONE_SKB="clone_skb 1000000" +# NIC adds 4 bytes CRC +PKT_SIZE="pkt_size 60" + +# COUNT 0 means forever +#COUNT="count 0" +COUNT="count 10000000" +DELAY="delay 0" + +PGDEV=/proc/net/pktgen/eth1 + echo "Configuring $PGDEV" + pgset "$COUNT" + pgset "$CLONE_SKB" + pgset "$PKT_SIZE" + pgset "$DELAY" + pgset "dst 10.10.11.2" + pgset "dst_mac 00:04:23:08:91:dc" + + +# Time to run +PGDEV=/proc/net/pktgen/pgctrl + + echo "Running... ctrl^C to stop" + pgset "start" + echo "Done" + +# Result can be vieved in /proc/net/pktgen/eth1 diff --git a/samples/pktgen/pktgen.conf-1-1-flows b/samples/pktgen/pktgen.conf-1-1-flows new file mode 100755 index 0000000000000..88a01b7d35310 --- /dev/null +++ b/samples/pktgen/pktgen.conf-1-1-flows @@ -0,0 +1,74 @@ +#! /bin/sh + +#modprobe pktgen + + +function pgset() { + local result + + echo $1 > $PGDEV + + result=`cat $PGDEV | fgrep "Result: OK:"` + if [ "$result" = "" ]; then + cat $PGDEV | fgrep Result: + fi +} + +function pg() { + echo inject > $PGDEV + cat $PGDEV +} + +# Config Start Here ----------------------------------------------------------- + + +# thread config +# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. + +PGDEV=/proc/net/pktgen/kpktgend_0 + echo "Removing all devices" + pgset "rem_device_all" + echo "Adding eth1" + pgset "add_device eth1" + echo "Setting max_before_softirq 10000" + pgset "max_before_softirq 10000" + + +# device config +# delay 0 +# We need to do alloc for every skb since we cannot clone here. + +CLONE_SKB="clone_skb 0" +# NIC adds 4 bytes CRC +PKT_SIZE="pkt_size 60" + +# COUNT 0 means forever +#COUNT="count 0" +COUNT="count 10000000" +DELAY="delay 0" + +PGDEV=/proc/net/pktgen/eth1 + echo "Configuring $PGDEV" + pgset "$COUNT" + pgset "$CLONE_SKB" + pgset "$PKT_SIZE" + pgset "$DELAY" + # Random address with in the min-max range + pgset "flag IPDST_RND" + pgset "dst_min 10.0.0.0" + pgset "dst_max 10.255.255.255" + + # 8k Concurrent flows at 4 pkts + pgset "flows 8192" + pgset "flowlen 4" + + pgset "dst_mac 00:04:23:08:91:dc" + +# Time to run +PGDEV=/proc/net/pktgen/pgctrl + + echo "Running... ctrl^C to stop" + pgset "start" + echo "Done" + +# Result can be vieved in /proc/net/pktgen/eth1 diff --git a/samples/pktgen/pktgen.conf-1-1-ip6 b/samples/pktgen/pktgen.conf-1-1-ip6 new file mode 100755 index 0000000000000..752f112bd9e66 --- /dev/null +++ b/samples/pktgen/pktgen.conf-1-1-ip6 @@ -0,0 +1,67 @@ +#! /bin/sh + +#modprobe pktgen + + +function pgset() { + local result + + echo $1 > $PGDEV + + result=`cat $PGDEV | fgrep "Result: OK:"` + if [ "$result" = "" ]; then + cat $PGDEV | fgrep Result: + fi +} + +function pg() { + echo inject > $PGDEV + cat $PGDEV +} + +# Config Start Here ----------------------------------------------------------- + + +# thread config +# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. +# IPv6. Note increase in minimal packet length + +PGDEV=/proc/net/pktgen/kpktgend_0 + echo "Removing all devices" + pgset "rem_device_all" + echo "Adding eth1" + pgset "add_device eth1" + echo "Setting max_before_softirq 10000" + pgset "max_before_softirq 10000" + + +# device config +# delay 0 + +CLONE_SKB="clone_skb 1000000" +# NIC adds 4 bytes CRC +PKT_SIZE="pkt_size 66" + +# COUNT 0 means forever +#COUNT="count 0" +COUNT="count 10000000" +DELAY="delay 0" + +PGDEV=/proc/net/pktgen/eth1 + echo "Configuring $PGDEV" + pgset "$COUNT" + pgset "$CLONE_SKB" + pgset "$PKT_SIZE" + pgset "$DELAY" + pgset "dst6 fec0::1" + pgset "src6 fec0::2" + pgset "dst_mac 00:04:23:08:91:dc" + +# Time to run +PGDEV=/proc/net/pktgen/pgctrl + + echo "Running... ctrl^C to stop" + pgset "start" + echo "Done" + +# Result can be vieved in /proc/net/pktgen/eth1 diff --git a/samples/pktgen/pktgen.conf-1-1-ip6-rdos b/samples/pktgen/pktgen.conf-1-1-ip6-rdos new file mode 100755 index 0000000000000..fd364277e43f2 --- /dev/null +++ b/samples/pktgen/pktgen.conf-1-1-ip6-rdos @@ -0,0 +1,70 @@ +#! /bin/sh + +#modprobe pktgen + + +function pgset() { + local result + + echo $1 > $PGDEV + + result=`cat $PGDEV | fgrep "Result: OK:"` + if [ "$result" = "" ]; then + cat $PGDEV | fgrep Result: + fi +} + +function pg() { + echo inject > $PGDEV + cat $PGDEV +} + +# Config Start Here ----------------------------------------------------------- + + +# thread config +# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. +# IPv6. Note increase in minimal packet length + +PGDEV=/proc/net/pktgen/kpktgend_0 + echo "Removing all devices" + pgset "rem_device_all" + echo "Adding eth1" + pgset "add_device eth1" + echo "Setting max_before_softirq 10000" + pgset "max_before_softirq 10000" + + +# device config +# delay 0 means maximum speed. + +# We need to do alloc for every skb since we cannot clone here. +CLONE_SKB="clone_skb 0" + +# NIC adds 4 bytes CRC +PKT_SIZE="pkt_size 66" + +# COUNT 0 means forever +#COUNT="count 0" +COUNT="count 10000000" +DELAY="delay 0" + +PGDEV=/proc/net/pktgen/eth1 + echo "Configuring $PGDEV" + pgset "$COUNT" + pgset "$CLONE_SKB" + pgset "$PKT_SIZE" + pgset "$DELAY" + pgset "dst6_min fec0::1" + pgset "dst6_max fec0::FFFF:FFFF" + + pgset "dst_mac 00:04:23:08:91:dc" + +# Time to run +PGDEV=/proc/net/pktgen/pgctrl + + echo "Running... ctrl^C to stop" + pgset "start" + echo "Done" + +# Result can be vieved in /proc/net/pktgen/eth1 diff --git a/samples/pktgen/pktgen.conf-1-1-rdos b/samples/pktgen/pktgen.conf-1-1-rdos new file mode 100755 index 0000000000000..bc81fa3192433 --- /dev/null +++ b/samples/pktgen/pktgen.conf-1-1-rdos @@ -0,0 +1,71 @@ +#! /bin/sh + +#modprobe pktgen + + +function pgset() { + local result + + echo $1 > $PGDEV + + result=`cat $PGDEV | fgrep "Result: OK:"` + if [ "$result" = "" ]; then + cat $PGDEV | fgrep Result: + fi +} + +function pg() { + echo inject > $PGDEV + cat $PGDEV +} + +# Config Start Here ----------------------------------------------------------- + + +# thread config +# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. + +PGDEV=/proc/net/pktgen/kpktgend_0 + echo "Removing all devices" + pgset "rem_device_all" + echo "Adding eth1" + pgset "add_device eth1" + echo "Setting max_before_softirq 10000" + pgset "max_before_softirq 10000" + + +# device config +# delay 0 + +# We need to do alloc for every skb since we cannot clone here. + +CLONE_SKB="clone_skb 0" +# NIC adds 4 bytes CRC +PKT_SIZE="pkt_size 60" + +# COUNT 0 means forever +#COUNT="count 0" +COUNT="count 10000000" +DELAY="delay 0" + +PGDEV=/proc/net/pktgen/eth1 + echo "Configuring $PGDEV" + pgset "$COUNT" + pgset "$CLONE_SKB" + pgset "$PKT_SIZE" + pgset "$DELAY" + # Random address with in the min-max range + pgset "flag IPDST_RND" + pgset "dst_min 10.0.0.0" + pgset "dst_max 10.255.255.255" + + pgset "dst_mac 00:04:23:08:91:dc" + +# Time to run +PGDEV=/proc/net/pktgen/pgctrl + + echo "Running... ctrl^C to stop" + pgset "start" + echo "Done" + +# Result can be vieved in /proc/net/pktgen/eth1 diff --git a/samples/pktgen/pktgen.conf-1-2 b/samples/pktgen/pktgen.conf-1-2 new file mode 100755 index 0000000000000..f99b886738608 --- /dev/null +++ b/samples/pktgen/pktgen.conf-1-2 @@ -0,0 +1,76 @@ +#! /bin/sh + +#modprobe pktgen + + +function pgset() { + local result + + echo $1 > $PGDEV + + result=`cat $PGDEV | fgrep "Result: OK:"` + if [ "$result" = "" ]; then + cat $PGDEV | fgrep Result: + fi +} + +function pg() { + echo inject > $PGDEV + cat $PGDEV +} + +# Config Start Here ----------------------------------------------------------- + + +# thread config +# One CPU means one thread. One CPU exammple. We add eth1, eth2 respectivly. + +PGDEV=/proc/net/pktgen/kpktgend_0 + echo "Removing all devices" + pgset "rem_device_all" + echo "Adding eth1" + pgset "add_device eth1" + echo "Adding eth2" + pgset "add_device eth2" + echo "Setting max_before_softirq 10000" + pgset "max_before_softirq 10000" + + +# device config +# delay 0 means maximum speed. + +CLONE_SKB="clone_skb 1000000" +# NIC adds 4 bytes CRC +PKT_SIZE="pkt_size 60" + +# COUNT 0 means forever +#COUNT="count 0" +COUNT="count 10000000" +DELAY="delay 0" + +PGDEV=/proc/net/pktgen/eth1 + echo "Configuring $PGDEV" + pgset "$COUNT" + pgset "$CLONE_SKB" + pgset "$PKT_SIZE" + pgset "$DELAY" + pgset "dst 10.10.11.2" + pgset "dst_mac 00:04:23:08:91:dc" + +PGDEV=/proc/net/pktgen/eth2 + echo "Configuring $PGDEV" + pgset "$COUNT" + pgset "$CLONE_SKB" + pgset "$PKT_SIZE" + pgset "$DELAY" + pgset "dst 192.168.2.2" + pgset "dst_mac 00:04:23:08:91:de" + +# Time to run +PGDEV=/proc/net/pktgen/pgctrl + + echo "Running... ctrl^C to stop" + pgset "start" + echo "Done" + +# Result can be vieved in /proc/net/pktgen/eth[1,2] diff --git a/samples/pktgen/pktgen.conf-2-1 b/samples/pktgen/pktgen.conf-2-1 new file mode 100755 index 0000000000000..845d7bf1609ab --- /dev/null +++ b/samples/pktgen/pktgen.conf-2-1 @@ -0,0 +1,72 @@ +#! /bin/sh + +#modprobe pktgen + + +function pgset() { + local result + + echo $1 > $PGDEV + + result=`cat $PGDEV | fgrep "Result: OK:"` + if [ "$result" = "" ]; then + cat $PGDEV | fgrep Result: + fi +} + +function pg() { + echo inject > $PGDEV + cat $PGDEV +} + +# Config Start Here ----------------------------------------------------------- + + +# thread config +# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. + +PGDEV=/proc/net/pktgen/kpktgend_0 + echo "Removing all devices" + pgset "rem_device_all" + echo "Adding eth1" + pgset "add_device eth1" + echo "Setting max_before_softirq 10000" + pgset "max_before_softirq 10000" + +# We need to remove old config since we dont use this thread. We can only +# one NIC on one CPU due to affinity reasons. + +PGDEV=/proc/net/pktgen/kpktgend_1 + echo "Removing all devices" + pgset "rem_device_all" + +# device config +# delay 0 means maximum speed. + +CLONE_SKB="clone_skb 1000000" +# NIC adds 4 bytes CRC +PKT_SIZE="pkt_size 60" + +# COUNT 0 means forever +#COUNT="count 0" +COUNT="count 10000000" +DELAY="delay 0" + +PGDEV=/proc/net/pktgen/eth1 + echo "Configuring $PGDEV" + pgset "$COUNT" + pgset "$CLONE_SKB" + pgset "$PKT_SIZE" + pgset "$DELAY" + pgset "dst 10.10.11.2" + pgset "dst_mac 00:04:23:08:91:dc" + + +# Time to run +PGDEV=/proc/net/pktgen/pgctrl + + echo "Running... ctrl^C to stop" + pgset "start" + echo "Done" + +# Result can be vieved in /proc/net/pktgen/eth1 diff --git a/samples/pktgen/pktgen.conf-2-2 b/samples/pktgen/pktgen.conf-2-2 new file mode 100755 index 0000000000000..7ce86470a3a94 --- /dev/null +++ b/samples/pktgen/pktgen.conf-2-2 @@ -0,0 +1,82 @@ +#! /bin/sh + +#modprobe pktgen + + +function pgset() { + local result + + echo $1 > $PGDEV + + result=`cat $PGDEV | fgrep "Result: OK:"` + if [ "$result" = "" ]; then + cat $PGDEV | fgrep Result: + fi +} + +function pg() { + echo inject > $PGDEV + cat $PGDEV +} + +# Config Start Here ----------------------------------------------------------- + + +# thread config +# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. + +PGDEV=/proc/net/pktgen/kpktgend_0 + echo "Removing all devices" + pgset "rem_device_all" + echo "Adding eth1" + pgset "add_device eth1" + echo "Setting max_before_softirq 10000" + pgset "max_before_softirq 10000" + +PGDEV=/proc/net/pktgen/kpktgend_1 + echo "Removing all devices" + pgset "rem_device_all" + echo "Adding eth2" + pgset "add_device eth2" + echo "Setting max_before_softirq 10000" + pgset "max_before_softirq 10000" + + +# device config +# delay 0 means maximum speed. + +CLONE_SKB="clone_skb 1000000" +# NIC adds 4 bytes CRC +PKT_SIZE="pkt_size 60" + +# COUNT 0 means forever +#COUNT="count 0" +COUNT="count 10000000" +DELAY="delay 0" + +PGDEV=/proc/net/pktgen/eth1 + echo "Configuring $PGDEV" + pgset "$COUNT" + pgset "$CLONE_SKB" + pgset "$PKT_SIZE" + pgset "$DELAY" + pgset "dst 10.10.11.2" + pgset "dst_mac 00:04:23:08:91:dc" + +PGDEV=/proc/net/pktgen/eth2 + echo "Configuring $PGDEV" + pgset "$COUNT" + pgset "$CLONE_SKB" + pgset "$PKT_SIZE" + pgset "$DELAY" + pgset "dst 192.168.2.2" + pgset "dst_mac 00:04:23:08:91:de" + +# Time to run +PGDEV=/proc/net/pktgen/pgctrl + + echo "Running... ctrl^C to stop" + pgset "start" + echo "Done" + +# Result can be vieved in /proc/net/pktgen/eth[1,2] From 865367db658f6f4d7b8280b0968b47e2cbddab90 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 24 Feb 2015 02:32:17 +0000 Subject: [PATCH 04/10] samples/pktgen: Delete unused function pg() This function is not used and wouldn't do anything useful as pktgen does not have an 'inject' command. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller --- samples/pktgen/pktgen.conf-1-1 | 5 ----- samples/pktgen/pktgen.conf-1-1-flows | 5 ----- samples/pktgen/pktgen.conf-1-1-ip6 | 5 ----- samples/pktgen/pktgen.conf-1-1-ip6-rdos | 5 ----- samples/pktgen/pktgen.conf-1-1-rdos | 5 ----- samples/pktgen/pktgen.conf-1-2 | 5 ----- samples/pktgen/pktgen.conf-2-1 | 5 ----- samples/pktgen/pktgen.conf-2-2 | 5 ----- 8 files changed, 40 deletions(-) diff --git a/samples/pktgen/pktgen.conf-1-1 b/samples/pktgen/pktgen.conf-1-1 index 5d30f836ca3ee..0a81c985129c9 100755 --- a/samples/pktgen/pktgen.conf-1-1 +++ b/samples/pktgen/pktgen.conf-1-1 @@ -14,11 +14,6 @@ function pgset() { fi } -function pg() { - echo inject > $PGDEV - cat $PGDEV -} - # Config Start Here ----------------------------------------------------------- diff --git a/samples/pktgen/pktgen.conf-1-1-flows b/samples/pktgen/pktgen.conf-1-1-flows index 88a01b7d35310..872dcbadd6c38 100755 --- a/samples/pktgen/pktgen.conf-1-1-flows +++ b/samples/pktgen/pktgen.conf-1-1-flows @@ -14,11 +14,6 @@ function pgset() { fi } -function pg() { - echo inject > $PGDEV - cat $PGDEV -} - # Config Start Here ----------------------------------------------------------- diff --git a/samples/pktgen/pktgen.conf-1-1-ip6 b/samples/pktgen/pktgen.conf-1-1-ip6 index 752f112bd9e66..cf0e86f8b43c2 100755 --- a/samples/pktgen/pktgen.conf-1-1-ip6 +++ b/samples/pktgen/pktgen.conf-1-1-ip6 @@ -14,11 +14,6 @@ function pgset() { fi } -function pg() { - echo inject > $PGDEV - cat $PGDEV -} - # Config Start Here ----------------------------------------------------------- diff --git a/samples/pktgen/pktgen.conf-1-1-ip6-rdos b/samples/pktgen/pktgen.conf-1-1-ip6-rdos index fd364277e43f2..799baeec0216f 100755 --- a/samples/pktgen/pktgen.conf-1-1-ip6-rdos +++ b/samples/pktgen/pktgen.conf-1-1-ip6-rdos @@ -14,11 +14,6 @@ function pgset() { fi } -function pg() { - echo inject > $PGDEV - cat $PGDEV -} - # Config Start Here ----------------------------------------------------------- diff --git a/samples/pktgen/pktgen.conf-1-1-rdos b/samples/pktgen/pktgen.conf-1-1-rdos index bc81fa3192433..e71f2818eef97 100755 --- a/samples/pktgen/pktgen.conf-1-1-rdos +++ b/samples/pktgen/pktgen.conf-1-1-rdos @@ -14,11 +14,6 @@ function pgset() { fi } -function pg() { - echo inject > $PGDEV - cat $PGDEV -} - # Config Start Here ----------------------------------------------------------- diff --git a/samples/pktgen/pktgen.conf-1-2 b/samples/pktgen/pktgen.conf-1-2 index f99b886738608..7f6e88e53ffd0 100755 --- a/samples/pktgen/pktgen.conf-1-2 +++ b/samples/pktgen/pktgen.conf-1-2 @@ -14,11 +14,6 @@ function pgset() { fi } -function pg() { - echo inject > $PGDEV - cat $PGDEV -} - # Config Start Here ----------------------------------------------------------- diff --git a/samples/pktgen/pktgen.conf-2-1 b/samples/pktgen/pktgen.conf-2-1 index 845d7bf1609ab..5e402cf9b0f57 100755 --- a/samples/pktgen/pktgen.conf-2-1 +++ b/samples/pktgen/pktgen.conf-2-1 @@ -14,11 +14,6 @@ function pgset() { fi } -function pg() { - echo inject > $PGDEV - cat $PGDEV -} - # Config Start Here ----------------------------------------------------------- diff --git a/samples/pktgen/pktgen.conf-2-2 b/samples/pktgen/pktgen.conf-2-2 index 7ce86470a3a94..d63dc5f2112da 100755 --- a/samples/pktgen/pktgen.conf-2-2 +++ b/samples/pktgen/pktgen.conf-2-2 @@ -14,11 +14,6 @@ function pgset() { fi } -function pg() { - echo inject > $PGDEV - cat $PGDEV -} - # Config Start Here ----------------------------------------------------------- From 2ad1cdf2ea5991b42b934d76c36113ceb4561fa6 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 24 Feb 2015 02:32:37 +0000 Subject: [PATCH 05/10] samples/pktgen: Correct comments about the thread config They all claimed to be two CPU examples using eth1, eth2 but that is only true in one case! Rob Jones pointed out spelling and grammar errors here, which I've also corrected. Cc: Rob Jones Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller --- samples/pktgen/pktgen.conf-1-1 | 2 +- samples/pktgen/pktgen.conf-1-1-flows | 2 +- samples/pktgen/pktgen.conf-1-1-ip6 | 2 +- samples/pktgen/pktgen.conf-1-1-ip6-rdos | 2 +- samples/pktgen/pktgen.conf-1-1-rdos | 2 +- samples/pktgen/pktgen.conf-1-2 | 2 +- samples/pktgen/pktgen.conf-2-1 | 3 ++- samples/pktgen/pktgen.conf-2-2 | 2 +- 8 files changed, 9 insertions(+), 8 deletions(-) diff --git a/samples/pktgen/pktgen.conf-1-1 b/samples/pktgen/pktgen.conf-1-1 index 0a81c985129c9..79462adad05d0 100755 --- a/samples/pktgen/pktgen.conf-1-1 +++ b/samples/pktgen/pktgen.conf-1-1 @@ -18,7 +18,7 @@ function pgset() { # thread config -# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. +# Each CPU has its own thread. One CPU example. We add eth1. PGDEV=/proc/net/pktgen/kpktgend_0 echo "Removing all devices" diff --git a/samples/pktgen/pktgen.conf-1-1-flows b/samples/pktgen/pktgen.conf-1-1-flows index 872dcbadd6c38..629ac3eaee355 100755 --- a/samples/pktgen/pktgen.conf-1-1-flows +++ b/samples/pktgen/pktgen.conf-1-1-flows @@ -18,7 +18,7 @@ function pgset() { # thread config -# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. +# Each CPU has its own thread. One CPU example. We add eth1. PGDEV=/proc/net/pktgen/kpktgend_0 echo "Removing all devices" diff --git a/samples/pktgen/pktgen.conf-1-1-ip6 b/samples/pktgen/pktgen.conf-1-1-ip6 index cf0e86f8b43c2..c392475d60cfa 100755 --- a/samples/pktgen/pktgen.conf-1-1-ip6 +++ b/samples/pktgen/pktgen.conf-1-1-ip6 @@ -18,7 +18,7 @@ function pgset() { # thread config -# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. +# Each CPU has its own thread. One CPU example. We add eth1. # IPv6. Note increase in minimal packet length PGDEV=/proc/net/pktgen/kpktgend_0 diff --git a/samples/pktgen/pktgen.conf-1-1-ip6-rdos b/samples/pktgen/pktgen.conf-1-1-ip6-rdos index 799baeec0216f..220d276f033a1 100755 --- a/samples/pktgen/pktgen.conf-1-1-ip6-rdos +++ b/samples/pktgen/pktgen.conf-1-1-ip6-rdos @@ -18,7 +18,7 @@ function pgset() { # thread config -# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. +# Each CPU has its own thread. One CPU example. We add eth1. # IPv6. Note increase in minimal packet length PGDEV=/proc/net/pktgen/kpktgend_0 diff --git a/samples/pktgen/pktgen.conf-1-1-rdos b/samples/pktgen/pktgen.conf-1-1-rdos index e71f2818eef97..6013975d26d9c 100755 --- a/samples/pktgen/pktgen.conf-1-1-rdos +++ b/samples/pktgen/pktgen.conf-1-1-rdos @@ -18,7 +18,7 @@ function pgset() { # thread config -# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. +# Each CPU has its own thread. One CPU example. We add eth1. PGDEV=/proc/net/pktgen/kpktgend_0 echo "Removing all devices" diff --git a/samples/pktgen/pktgen.conf-1-2 b/samples/pktgen/pktgen.conf-1-2 index 7f6e88e53ffd0..136e10caff636 100755 --- a/samples/pktgen/pktgen.conf-1-2 +++ b/samples/pktgen/pktgen.conf-1-2 @@ -18,7 +18,7 @@ function pgset() { # thread config -# One CPU means one thread. One CPU exammple. We add eth1, eth2 respectivly. +# One CPU means one thread. One CPU example. We add eth1, eth2 respectivly. PGDEV=/proc/net/pktgen/kpktgend_0 echo "Removing all devices" diff --git a/samples/pktgen/pktgen.conf-2-1 b/samples/pktgen/pktgen.conf-2-1 index 5e402cf9b0f57..ccd32780bed16 100755 --- a/samples/pktgen/pktgen.conf-2-1 +++ b/samples/pktgen/pktgen.conf-2-1 @@ -18,7 +18,8 @@ function pgset() { # thread config -# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. +# Each CPU has its own thread. Two CPU example. We add eth1 to the first +# and leave the second idle. PGDEV=/proc/net/pktgen/kpktgend_0 echo "Removing all devices" diff --git a/samples/pktgen/pktgen.conf-2-2 b/samples/pktgen/pktgen.conf-2-2 index d63dc5f2112da..49ae4cf2bb769 100755 --- a/samples/pktgen/pktgen.conf-2-2 +++ b/samples/pktgen/pktgen.conf-2-2 @@ -18,7 +18,7 @@ function pgset() { # thread config -# Each CPU has own thread. Two CPU exammple. We add eth1, eth2 respectivly. +# Each CPU has its own thread. Two CPU example. We add eth1, eth2 respectively. PGDEV=/proc/net/pktgen/kpktgend_0 echo "Removing all devices" From 06481f22c6fa5a85445770d5adceb261cac6620f Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 24 Feb 2015 02:32:48 +0000 Subject: [PATCH 06/10] samples/pktgen: Remove setting of obsolete max_before_softirq parameter Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller --- samples/pktgen/pktgen.conf-1-1 | 2 -- samples/pktgen/pktgen.conf-1-1-flows | 2 -- samples/pktgen/pktgen.conf-1-1-ip6 | 2 -- samples/pktgen/pktgen.conf-1-1-ip6-rdos | 2 -- samples/pktgen/pktgen.conf-1-1-rdos | 2 -- samples/pktgen/pktgen.conf-1-2 | 2 -- samples/pktgen/pktgen.conf-2-1 | 2 -- samples/pktgen/pktgen.conf-2-2 | 4 ---- 8 files changed, 18 deletions(-) diff --git a/samples/pktgen/pktgen.conf-1-1 b/samples/pktgen/pktgen.conf-1-1 index 79462adad05d0..e32782e06cafe 100755 --- a/samples/pktgen/pktgen.conf-1-1 +++ b/samples/pktgen/pktgen.conf-1-1 @@ -25,8 +25,6 @@ PGDEV=/proc/net/pktgen/kpktgend_0 pgset "rem_device_all" echo "Adding eth1" pgset "add_device eth1" - echo "Setting max_before_softirq 10000" - pgset "max_before_softirq 10000" # device config diff --git a/samples/pktgen/pktgen.conf-1-1-flows b/samples/pktgen/pktgen.conf-1-1-flows index 629ac3eaee355..ea859e441f6e0 100755 --- a/samples/pktgen/pktgen.conf-1-1-flows +++ b/samples/pktgen/pktgen.conf-1-1-flows @@ -25,8 +25,6 @@ PGDEV=/proc/net/pktgen/kpktgend_0 pgset "rem_device_all" echo "Adding eth1" pgset "add_device eth1" - echo "Setting max_before_softirq 10000" - pgset "max_before_softirq 10000" # device config diff --git a/samples/pktgen/pktgen.conf-1-1-ip6 b/samples/pktgen/pktgen.conf-1-1-ip6 index c392475d60cfa..0a81fd92426b5 100755 --- a/samples/pktgen/pktgen.conf-1-1-ip6 +++ b/samples/pktgen/pktgen.conf-1-1-ip6 @@ -26,8 +26,6 @@ PGDEV=/proc/net/pktgen/kpktgend_0 pgset "rem_device_all" echo "Adding eth1" pgset "add_device eth1" - echo "Setting max_before_softirq 10000" - pgset "max_before_softirq 10000" # device config diff --git a/samples/pktgen/pktgen.conf-1-1-ip6-rdos b/samples/pktgen/pktgen.conf-1-1-ip6-rdos index 220d276f033a1..21c3b1589fa7b 100755 --- a/samples/pktgen/pktgen.conf-1-1-ip6-rdos +++ b/samples/pktgen/pktgen.conf-1-1-ip6-rdos @@ -26,8 +26,6 @@ PGDEV=/proc/net/pktgen/kpktgend_0 pgset "rem_device_all" echo "Adding eth1" pgset "add_device eth1" - echo "Setting max_before_softirq 10000" - pgset "max_before_softirq 10000" # device config diff --git a/samples/pktgen/pktgen.conf-1-1-rdos b/samples/pktgen/pktgen.conf-1-1-rdos index 6013975d26d9c..fc4e345c4a346 100755 --- a/samples/pktgen/pktgen.conf-1-1-rdos +++ b/samples/pktgen/pktgen.conf-1-1-rdos @@ -25,8 +25,6 @@ PGDEV=/proc/net/pktgen/kpktgend_0 pgset "rem_device_all" echo "Adding eth1" pgset "add_device eth1" - echo "Setting max_before_softirq 10000" - pgset "max_before_softirq 10000" # device config diff --git a/samples/pktgen/pktgen.conf-1-2 b/samples/pktgen/pktgen.conf-1-2 index 136e10caff636..dfea8e6896d48 100755 --- a/samples/pktgen/pktgen.conf-1-2 +++ b/samples/pktgen/pktgen.conf-1-2 @@ -27,8 +27,6 @@ PGDEV=/proc/net/pktgen/kpktgend_0 pgset "add_device eth1" echo "Adding eth2" pgset "add_device eth2" - echo "Setting max_before_softirq 10000" - pgset "max_before_softirq 10000" # device config diff --git a/samples/pktgen/pktgen.conf-2-1 b/samples/pktgen/pktgen.conf-2-1 index ccd32780bed16..5d2fe4cdbd96b 100755 --- a/samples/pktgen/pktgen.conf-2-1 +++ b/samples/pktgen/pktgen.conf-2-1 @@ -26,8 +26,6 @@ PGDEV=/proc/net/pktgen/kpktgend_0 pgset "rem_device_all" echo "Adding eth1" pgset "add_device eth1" - echo "Setting max_before_softirq 10000" - pgset "max_before_softirq 10000" # We need to remove old config since we dont use this thread. We can only # one NIC on one CPU due to affinity reasons. diff --git a/samples/pktgen/pktgen.conf-2-2 b/samples/pktgen/pktgen.conf-2-2 index 49ae4cf2bb769..474f200edcfbe 100755 --- a/samples/pktgen/pktgen.conf-2-2 +++ b/samples/pktgen/pktgen.conf-2-2 @@ -25,16 +25,12 @@ PGDEV=/proc/net/pktgen/kpktgend_0 pgset "rem_device_all" echo "Adding eth1" pgset "add_device eth1" - echo "Setting max_before_softirq 10000" - pgset "max_before_softirq 10000" PGDEV=/proc/net/pktgen/kpktgend_1 echo "Removing all devices" pgset "rem_device_all" echo "Adding eth2" pgset "add_device eth2" - echo "Setting max_before_softirq 10000" - pgset "max_before_softirq 10000" # device config From db72aba30a4f4c15eb20066f1d9c1bcbcf419236 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 24 Feb 2015 02:32:59 +0000 Subject: [PATCH 07/10] samples/pktgen: Use bash as interpreter These scripts use the non-POSIX 'function' and 'local' keywords so they won't work with every /bin/sh. We could drop 'function' as it is a no-op, but 'local' makes for cleaner scripts. Require use of bash. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller --- samples/pktgen/pktgen.conf-1-1 | 2 +- samples/pktgen/pktgen.conf-1-1-flows | 2 +- samples/pktgen/pktgen.conf-1-1-ip6 | 2 +- samples/pktgen/pktgen.conf-1-1-ip6-rdos | 2 +- samples/pktgen/pktgen.conf-1-1-rdos | 2 +- samples/pktgen/pktgen.conf-1-2 | 2 +- samples/pktgen/pktgen.conf-2-1 | 2 +- samples/pktgen/pktgen.conf-2-2 | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/samples/pktgen/pktgen.conf-1-1 b/samples/pktgen/pktgen.conf-1-1 index e32782e06cafe..bb5398367d4ba 100755 --- a/samples/pktgen/pktgen.conf-1-1 +++ b/samples/pktgen/pktgen.conf-1-1 @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/bash #modprobe pktgen diff --git a/samples/pktgen/pktgen.conf-1-1-flows b/samples/pktgen/pktgen.conf-1-1-flows index ea859e441f6e0..db20ac8a66a7e 100755 --- a/samples/pktgen/pktgen.conf-1-1-flows +++ b/samples/pktgen/pktgen.conf-1-1-flows @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/bash #modprobe pktgen diff --git a/samples/pktgen/pktgen.conf-1-1-ip6 b/samples/pktgen/pktgen.conf-1-1-ip6 index 0a81fd92426b5..e22199d1ed76a 100755 --- a/samples/pktgen/pktgen.conf-1-1-ip6 +++ b/samples/pktgen/pktgen.conf-1-1-ip6 @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/bash #modprobe pktgen diff --git a/samples/pktgen/pktgen.conf-1-1-ip6-rdos b/samples/pktgen/pktgen.conf-1-1-ip6-rdos index 21c3b1589fa7b..58dd0524f2644 100755 --- a/samples/pktgen/pktgen.conf-1-1-ip6-rdos +++ b/samples/pktgen/pktgen.conf-1-1-ip6-rdos @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/bash #modprobe pktgen diff --git a/samples/pktgen/pktgen.conf-1-1-rdos b/samples/pktgen/pktgen.conf-1-1-rdos index fc4e345c4a346..2834ac7897218 100755 --- a/samples/pktgen/pktgen.conf-1-1-rdos +++ b/samples/pktgen/pktgen.conf-1-1-rdos @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/bash #modprobe pktgen diff --git a/samples/pktgen/pktgen.conf-1-2 b/samples/pktgen/pktgen.conf-1-2 index dfea8e6896d48..b519dab262ce9 100755 --- a/samples/pktgen/pktgen.conf-1-2 +++ b/samples/pktgen/pktgen.conf-1-2 @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/bash #modprobe pktgen diff --git a/samples/pktgen/pktgen.conf-2-1 b/samples/pktgen/pktgen.conf-2-1 index 5d2fe4cdbd96b..6f57a558d817c 100755 --- a/samples/pktgen/pktgen.conf-2-1 +++ b/samples/pktgen/pktgen.conf-2-1 @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/bash #modprobe pktgen diff --git a/samples/pktgen/pktgen.conf-2-2 b/samples/pktgen/pktgen.conf-2-2 index 474f200edcfbe..aa3225280521e 100755 --- a/samples/pktgen/pktgen.conf-2-2 +++ b/samples/pktgen/pktgen.conf-2-2 @@ -1,4 +1,4 @@ -#! /bin/sh +#!/bin/bash #modprobe pktgen From 16b5d0c4a24c793ca3584ca5c50fd5f8f2166120 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 24 Feb 2015 02:33:08 +0000 Subject: [PATCH 08/10] samples/pktgen: Trap SIGINT Otherwise ^C stops the script, not just pktgen. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller --- samples/pktgen/pktgen.conf-1-1 | 1 + samples/pktgen/pktgen.conf-1-1-flows | 1 + samples/pktgen/pktgen.conf-1-1-ip6 | 1 + samples/pktgen/pktgen.conf-1-1-ip6-rdos | 1 + samples/pktgen/pktgen.conf-1-1-rdos | 1 + samples/pktgen/pktgen.conf-1-2 | 1 + samples/pktgen/pktgen.conf-2-1 | 1 + samples/pktgen/pktgen.conf-2-2 | 1 + 8 files changed, 8 insertions(+) diff --git a/samples/pktgen/pktgen.conf-1-1 b/samples/pktgen/pktgen.conf-1-1 index bb5398367d4ba..fc1d15c985954 100755 --- a/samples/pktgen/pktgen.conf-1-1 +++ b/samples/pktgen/pktgen.conf-1-1 @@ -53,6 +53,7 @@ PGDEV=/proc/net/pktgen/eth1 PGDEV=/proc/net/pktgen/pgctrl echo "Running... ctrl^C to stop" + trap true INT pgset "start" echo "Done" diff --git a/samples/pktgen/pktgen.conf-1-1-flows b/samples/pktgen/pktgen.conf-1-1-flows index db20ac8a66a7e..e00d66c8f5e55 100755 --- a/samples/pktgen/pktgen.conf-1-1-flows +++ b/samples/pktgen/pktgen.conf-1-1-flows @@ -61,6 +61,7 @@ PGDEV=/proc/net/pktgen/eth1 PGDEV=/proc/net/pktgen/pgctrl echo "Running... ctrl^C to stop" + trap true INT pgset "start" echo "Done" diff --git a/samples/pktgen/pktgen.conf-1-1-ip6 b/samples/pktgen/pktgen.conf-1-1-ip6 index e22199d1ed76a..f16145303afbf 100755 --- a/samples/pktgen/pktgen.conf-1-1-ip6 +++ b/samples/pktgen/pktgen.conf-1-1-ip6 @@ -54,6 +54,7 @@ PGDEV=/proc/net/pktgen/eth1 PGDEV=/proc/net/pktgen/pgctrl echo "Running... ctrl^C to stop" + trap true INT pgset "start" echo "Done" diff --git a/samples/pktgen/pktgen.conf-1-1-ip6-rdos b/samples/pktgen/pktgen.conf-1-1-ip6-rdos index 58dd0524f2644..06b502834cc75 100755 --- a/samples/pktgen/pktgen.conf-1-1-ip6-rdos +++ b/samples/pktgen/pktgen.conf-1-1-ip6-rdos @@ -57,6 +57,7 @@ PGDEV=/proc/net/pktgen/eth1 PGDEV=/proc/net/pktgen/pgctrl echo "Running... ctrl^C to stop" + trap true INT pgset "start" echo "Done" diff --git a/samples/pktgen/pktgen.conf-1-1-rdos b/samples/pktgen/pktgen.conf-1-1-rdos index 2834ac7897218..8f1ce1a0aa98e 100755 --- a/samples/pktgen/pktgen.conf-1-1-rdos +++ b/samples/pktgen/pktgen.conf-1-1-rdos @@ -58,6 +58,7 @@ PGDEV=/proc/net/pktgen/eth1 PGDEV=/proc/net/pktgen/pgctrl echo "Running... ctrl^C to stop" + trap true INT pgset "start" echo "Done" diff --git a/samples/pktgen/pktgen.conf-1-2 b/samples/pktgen/pktgen.conf-1-2 index b519dab262ce9..f151e85c536a0 100755 --- a/samples/pktgen/pktgen.conf-1-2 +++ b/samples/pktgen/pktgen.conf-1-2 @@ -63,6 +63,7 @@ PGDEV=/proc/net/pktgen/eth2 PGDEV=/proc/net/pktgen/pgctrl echo "Running... ctrl^C to stop" + trap true INT pgset "start" echo "Done" diff --git a/samples/pktgen/pktgen.conf-2-1 b/samples/pktgen/pktgen.conf-2-1 index 6f57a558d817c..e6b36b2f840e6 100755 --- a/samples/pktgen/pktgen.conf-2-1 +++ b/samples/pktgen/pktgen.conf-2-1 @@ -60,6 +60,7 @@ PGDEV=/proc/net/pktgen/eth1 PGDEV=/proc/net/pktgen/pgctrl echo "Running... ctrl^C to stop" + trap true INT pgset "start" echo "Done" diff --git a/samples/pktgen/pktgen.conf-2-2 b/samples/pktgen/pktgen.conf-2-2 index aa3225280521e..6484435c104e0 100755 --- a/samples/pktgen/pktgen.conf-2-2 +++ b/samples/pktgen/pktgen.conf-2-2 @@ -67,6 +67,7 @@ PGDEV=/proc/net/pktgen/eth2 PGDEV=/proc/net/pktgen/pgctrl echo "Running... ctrl^C to stop" + trap true INT pgset "start" echo "Done" From 4062bd25f0be9bd2dae25992ad87247ac4f73df3 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 24 Feb 2015 02:33:20 +0000 Subject: [PATCH 09/10] samples/pktgen: Show the results rather than just commenting where they are Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller --- samples/pktgen/pktgen.conf-1-1 | 3 +-- samples/pktgen/pktgen.conf-1-1-flows | 3 +-- samples/pktgen/pktgen.conf-1-1-ip6 | 3 +-- samples/pktgen/pktgen.conf-1-1-ip6-rdos | 3 +-- samples/pktgen/pktgen.conf-1-1-rdos | 3 +-- samples/pktgen/pktgen.conf-1-2 | 3 +-- samples/pktgen/pktgen.conf-2-1 | 3 +-- samples/pktgen/pktgen.conf-2-2 | 3 +-- 8 files changed, 8 insertions(+), 16 deletions(-) diff --git a/samples/pktgen/pktgen.conf-1-1 b/samples/pktgen/pktgen.conf-1-1 index fc1d15c985954..f91daad9e916f 100755 --- a/samples/pktgen/pktgen.conf-1-1 +++ b/samples/pktgen/pktgen.conf-1-1 @@ -56,5 +56,4 @@ PGDEV=/proc/net/pktgen/pgctrl trap true INT pgset "start" echo "Done" - -# Result can be vieved in /proc/net/pktgen/eth1 + cat /proc/net/pktgen/eth1 diff --git a/samples/pktgen/pktgen.conf-1-1-flows b/samples/pktgen/pktgen.conf-1-1-flows index e00d66c8f5e55..081749c9707d8 100755 --- a/samples/pktgen/pktgen.conf-1-1-flows +++ b/samples/pktgen/pktgen.conf-1-1-flows @@ -64,5 +64,4 @@ PGDEV=/proc/net/pktgen/pgctrl trap true INT pgset "start" echo "Done" - -# Result can be vieved in /proc/net/pktgen/eth1 + cat /proc/net/pktgen/eth1 diff --git a/samples/pktgen/pktgen.conf-1-1-ip6 b/samples/pktgen/pktgen.conf-1-1-ip6 index f16145303afbf..0b9ffd47fd410 100755 --- a/samples/pktgen/pktgen.conf-1-1-ip6 +++ b/samples/pktgen/pktgen.conf-1-1-ip6 @@ -57,5 +57,4 @@ PGDEV=/proc/net/pktgen/pgctrl trap true INT pgset "start" echo "Done" - -# Result can be vieved in /proc/net/pktgen/eth1 + cat /proc/net/pktgen/eth1 diff --git a/samples/pktgen/pktgen.conf-1-1-ip6-rdos b/samples/pktgen/pktgen.conf-1-1-ip6-rdos index 06b502834cc75..ad98e5f407762 100755 --- a/samples/pktgen/pktgen.conf-1-1-ip6-rdos +++ b/samples/pktgen/pktgen.conf-1-1-ip6-rdos @@ -60,5 +60,4 @@ PGDEV=/proc/net/pktgen/pgctrl trap true INT pgset "start" echo "Done" - -# Result can be vieved in /proc/net/pktgen/eth1 + cat /proc/net/pktgen/eth1 diff --git a/samples/pktgen/pktgen.conf-1-1-rdos b/samples/pktgen/pktgen.conf-1-1-rdos index 8f1ce1a0aa98e..c7553be49b80f 100755 --- a/samples/pktgen/pktgen.conf-1-1-rdos +++ b/samples/pktgen/pktgen.conf-1-1-rdos @@ -61,5 +61,4 @@ PGDEV=/proc/net/pktgen/pgctrl trap true INT pgset "start" echo "Done" - -# Result can be vieved in /proc/net/pktgen/eth1 + cat /proc/net/pktgen/eth1 diff --git a/samples/pktgen/pktgen.conf-1-2 b/samples/pktgen/pktgen.conf-1-2 index f151e85c536a0..ba4eb26e168d2 100755 --- a/samples/pktgen/pktgen.conf-1-2 +++ b/samples/pktgen/pktgen.conf-1-2 @@ -66,5 +66,4 @@ PGDEV=/proc/net/pktgen/pgctrl trap true INT pgset "start" echo "Done" - -# Result can be vieved in /proc/net/pktgen/eth[1,2] + cat /proc/net/pktgen/eth1 /proc/net/pktgen/eth2 diff --git a/samples/pktgen/pktgen.conf-2-1 b/samples/pktgen/pktgen.conf-2-1 index e6b36b2f840e6..e108e97d6d892 100755 --- a/samples/pktgen/pktgen.conf-2-1 +++ b/samples/pktgen/pktgen.conf-2-1 @@ -63,5 +63,4 @@ PGDEV=/proc/net/pktgen/pgctrl trap true INT pgset "start" echo "Done" - -# Result can be vieved in /proc/net/pktgen/eth1 + cat /proc/net/pktgen/eth1 diff --git a/samples/pktgen/pktgen.conf-2-2 b/samples/pktgen/pktgen.conf-2-2 index 6484435c104e0..acea15503e719 100755 --- a/samples/pktgen/pktgen.conf-2-2 +++ b/samples/pktgen/pktgen.conf-2-2 @@ -70,5 +70,4 @@ PGDEV=/proc/net/pktgen/pgctrl trap true INT pgset "start" echo "Done" - -# Result can be vieved in /proc/net/pktgen/eth[1,2] + cat /proc/net/pktgen/eth1 /proc/net/pktgen/eth2 From 4e081e0cbdf850366d28ddb77afba2031b26d933 Mon Sep 17 00:00:00 2001 From: Ben Hutchings Date: Tue, 24 Feb 2015 02:33:29 +0000 Subject: [PATCH 10/10] pktgen: Correct documentation of module name and command Drop the '.o' suffix so this text properly covers both the built-in and modular cases. 'insmod pktgen' obviously won't work; the command should be modprobe. Signed-off-by: Ben Hutchings Signed-off-by: David S. Miller --- Documentation/networking/pktgen.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Documentation/networking/pktgen.txt b/Documentation/networking/pktgen.txt index 24c6dc100e024..0344f1d45b376 100644 --- a/Documentation/networking/pktgen.txt +++ b/Documentation/networking/pktgen.txt @@ -3,8 +3,8 @@ HOWTO for the linux packet generator ------------------------------------ -Enable CONFIG_NET_PKTGEN to compile and build pktgen.o either in-kernel -or as a module. A module is preferred; insmod pktgen if needed. Once +Enable CONFIG_NET_PKTGEN to compile and build pktgen either in-kernel +or as a module. A module is preferred; modprobe pktgen if needed. Once running, pktgen creates a thread for each CPU with affinity to that CPU. Monitoring and controlling is done via /proc. It is easiest to select a suitable sample script and configure that.