linux/samples/pktgen
Juhee Kang c0e9422c4e samples: pktgen: fix to print when terminated normally
Currently, most pktgen samples print the execution result when the
program is terminated normally. However, sample03 doesn't work
appropriately.

This is results of samples:

    # DEV=eth0 DEST_IP=10.1.0.1 DST_MAC=00:11:22:33:44:55 ./pktgen_sample04_many_flows.sh -n 1
    Running... ctrl^C to stop
    Device: eth0@0
    Result: OK: 19(c5+d13) usec, 1 (60byte,0frags)
    51762pps 24Mb/sec (24845760bps) errors: 0

    # DEV=eth0 DEST_IP=10.1.0.1 DST_MAC=00:11:22:33:44:55 ./pktgen_sample03_burst_single_flow.sh -n 1
    Running... ctrl^C to stop

The reason why it doesn't print the execution result when the program is
terminated usually is that sample03 doesn't call the function which
prints the result, unlike other samples.

So, this commit solves this issue by calling the function before
termination. Also, this commit changes control_c function to
print_result to maintain consistency with other samples.

Signed-off-by: Juhee Kang <claudiajkang@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2021-08-25 13:44:30 +01:00
..
functions.sh samples: pktgen: pass the environment variable of normal user to sudo 2021-08-16 11:02:09 +01:00
parameters.sh samples: pktgen: add UDP tx checksum support 2021-05-28 14:52:13 -07:00
pktgen_bench_xmit_mode_netif_receive.sh samples: pktgen: allow to specify delay parameter via new opt 2021-03-14 14:22:37 -07:00
pktgen_bench_xmit_mode_queue_xmit.sh samples: pktgen: allow to specify delay parameter via new opt 2021-03-14 14:22:37 -07:00
pktgen_sample01_simple.sh samples: pktgen: add UDP tx checksum support 2021-05-28 14:52:13 -07:00
pktgen_sample02_multiqueue.sh samples: pktgen: add UDP tx checksum support 2021-05-28 14:52:13 -07:00
pktgen_sample03_burst_single_flow.sh samples: pktgen: fix to print when terminated normally 2021-08-25 13:44:30 +01:00
pktgen_sample04_many_flows.sh samples: pktgen: add missing IPv6 option to pktgen scripts 2021-08-16 11:02:09 +01:00
pktgen_sample05_flow_per_thread.sh samples: pktgen: add missing IPv6 option to pktgen scripts 2021-08-16 11:02:09 +01:00
pktgen_sample06_numa_awared_queue_irq_affinity.sh samples: pktgen: add UDP tx checksum support 2021-05-28 14:52:13 -07:00
README.rst samples: pktgen: new append mode 2021-03-14 14:22:38 -07:00

Sample and benchmark scripts for pktgen (packet generator)
==========================================================
This directory contains some pktgen sample and benchmark scripts, that
can easily be copied and adjusted for your own use-case.

General doc is located in kernel: Documentation/networking/pktgen.rst

Helper include files
====================
This directory contains two helper shell files, that can be "included"
by shell source'ing.  Namely "functions.sh" and "parameters.sh".

Common parameters
-----------------
The parameters.sh file support easy and consistant parameter parsing
across the sample scripts.  Usage example is printed on errors::

 Usage: ./pktgen_sample01_simple.sh [-vx] -i ethX
  -i : ($DEV)       output interface/device (required)
  -s : ($PKT_SIZE)  packet size
  -d : ($DEST_IP)   destination IP. CIDR (e.g. 198.18.0.0/15) is also allowed
  -m : ($DST_MAC)   destination MAC-addr
  -p : ($DST_PORT)  destination PORT range (e.g. 433-444) is also allowed
  -t : ($THREADS)   threads to start
  -f : ($F_THREAD)  index of first thread (zero indexed CPU number)
  -c : ($SKB_CLONE) SKB clones send before alloc new SKB
  -n : ($COUNT)     num messages to send per thread, 0 means indefinitely
  -b : ($BURST)     HW level bursting of SKBs
  -v : ($VERBOSE)   verbose
  -x : ($DEBUG)     debug
  -6 : ($IP6)       IPv6
  -w : ($DELAY)     Tx Delay value (ns)
  -a : ($APPEND)    Script will not reset generator's state, but will append its config

The global variable being set is also listed.  E.g. the required
interface/device parameter "-i" sets variable $DEV.

"-a" parameter may be used to create different flows simultaneously.
In this mode script will keep the existing config, will append its settings.
In this mode you'll have to manually run traffic with "pg_ctrl start".

For example you may use:

    source ./samples/pktgen/functions.sh
    pg_ctrl reset
    # add first device
    ./pktgen_sample06_numa_awared_queue_irq_affinity.sh -a -i ens1f0 -m 34:80:0d:a3:fc:c9 -t 8
    # add second device
    ./pktgen_sample06_numa_awared_queue_irq_affinity.sh -a -i ens1f1 -m 34:80:0d:a3:fc:c9 -t 8
    # run joint traffic on two devs
    pg_ctrl start

Common functions
----------------
The functions.sh file provides; Three different shell functions for
configuring the different components of pktgen: pg_ctrl(), pg_thread()
and pg_set().

These functions correspond to pktgens different components.
 * pg_ctrl()   control "pgctrl" (/proc/net/pktgen/pgctrl)
 * pg_thread() control the kernel threads and binding to devices
 * pg_set()    control setup of individual devices

See sample scripts for usage examples.