1. 25 May, 2015 30 commits
  2. 23 May, 2015 10 commits
    • David S. Miller's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net · 36583eb5
      David S. Miller authored
      Conflicts:
      	drivers/net/ethernet/cadence/macb.c
      	drivers/net/phy/phy.c
      	include/linux/skbuff.h
      	net/ipv4/tcp.c
      	net/switchdev/switchdev.c
      
      Switchdev was a case of RTNH_H_{EXTERNAL --> OFFLOAD}
      renaming overlapping with net-next changes of various
      sorts.
      
      phy.c was a case of two changes, one adding a local
      variable to a function whilst the second was removing
      one.
      
      tcp.c overlapped a deadlock fix with the addition of new tcp_info
      statistic values.
      
      macb.c involved the addition of two zyncq device entries.
      
      skbuff.h involved adding back ipv4_daddr to nf_bridge_info
      whilst net-next changes put two other existing members of
      that struct into a union.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      36583eb5
    • David S. Miller's avatar
      Merge branch 'pktgen-new-scripts' · fa7912be
      David S. Miller authored
      Jesper Dangaard Brouer says:
      
      ====================
      pktgen: cleanups and introducing new samples/pktgen scripts
      
      v3:
       - Aborted v2 send due it was not generating diff stat
         (this is a bug in stg-mail, if not in the root directory)
      
      v2: address nitpicks from Cong Wang
       - Remove useless cat's, but keep them for old pgset()
       - Comment on: Due to pgctrl, cannot use exit code $? from grep
       - Use arithmetic compare in pktgen_sample03_burst_single_flow.sh
      
      This patchset is focused on making pktgen easier to use and better
      documented. It contains a number of documentation updates and minor
      changes to pktgen.  The major contribution is introduction of common
      helper function for sample scripts.
      
      Instead of the old pgset() function, three new shell functions for
      configuring the different components of pktgen are introduced:
       pg_ctrl(), pg_thread() and pg_set().
      
      The new 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
      
      Helpers also provide consistent parameter parsing across the sample
      scripts.
      
      Usage example:
       ./pktgen_sample01_simple.sh -i eth41 -m 00:12:C0:02:AC:5A -d 192.168.41.2
      
      Usage: ./pktgen_sample01_simple.sh [-vx] -i ethX
        -i : ($DEV)       output interface/device (required)
        -s : ($PKT_SIZE)  packet size
        -d : ($DEST_IP)   destination IP
        -m : ($DST_MAC)   destination MAC-addr
        -t : ($THREADS)   threads to start
        -c : ($SKB_CLONE) SKB clones send before alloc new SKB
        -b : ($BURST)     HW level bursting of SKBs
        -v : ($VERBOSE)   verbose
        -x : ($DEBUG)     debug
      
      These scripts are borrowed from:
       https://github.com/netoptimizer/network-testing/tree/master/pktgen
      ====================
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      fa7912be
    • Jesper Dangaard Brouer's avatar
      pktgen: add benchmark script pktgen_bench_xmit_mode_netif_receive.sh · 05a14d5e
      Jesper Dangaard Brouer authored
      This script pktgen_bench_xmit_mode_netif_receive.sh is a benchmark
      script, which can be used for benchmarking part of the network stack.
      This can be used for performance improving or catching regression in
      that area.
      
      The script is developed for benchmarking ingress qdisc path, original
      idea by Alexei Starovoitov.  This script don't really need any
      hardware.  This is achieved via the recently introduced stack inject
      feature "xmit_mode netif_receive". See commit 62f64aed ("pktgen:
      introduce xmit_mode '<start_xmit|netif_receive>'").
      Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      05a14d5e
    • Jesper Dangaard Brouer's avatar
      pktgen: add sample script pktgen_sample03_burst_single_flow.sh · 1d73ba16
      Jesper Dangaard Brouer authored
      Add the pktgen samples script pktgen_sample03_burst_single_flow.sh
      that demonstrates how to acheive maximum performance.
      
      If correctly tuned[1] single CPU 10Gbit/s wirespeed small pkts is
      possible[2] which is 14.88Mpps.  The trick is to take advantage of the
      "burst" feature introduced in commit 38b2cf29 ("net: pktgen:
      packet bursting via skb->xmit_more").
      
      [1] http://netoptimizer.blogspot.dk/2014/06/pktgen-for-network-overload-testing.html
      [2] http://netoptimizer.blogspot.dk/2014/10/unlocked-10gbps-tx-wirespeed-smallest.htmlSigned-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1d73ba16
    • Jesper Dangaard Brouer's avatar
      pktgen: add sample script pktgen_sample02_multiqueue.sh · 282fb589
      Jesper Dangaard Brouer authored
      Add the pktgen samples script pktgen_sample02_multiqueue.sh that
      demonstrates generating packets on multiqueue NICs.
      
      Specifically notice the options "-t" that specifies how many
      kernel threads to activate.  Also notice the flag QUEUE_MAP_CPU,
      which cause the SKB TX queue to be mapped to the CPU running the
      kernel thread.  For best scalability people are also encourage to
      map NIC IRQ /proc/irq/*/smp_affinity to CPU number.
      
      Usage example with "-t" 4 threads and help:
       ./pktgen_sample02_multiqueue.sh -i eth4 -m 00:1B:21:3C:9D:F8 -t 4
      
      Usage: ./pktgen_sample02_multiqueue.sh [-vx] -i ethX
        -i : ($DEV)       output interface/device (required)
        -s : ($PKT_SIZE)  packet size
        -d : ($DEST_IP)   destination IP
        -m : ($DST_MAC)   destination MAC-addr
        -t : ($THREADS)   threads to start
        -c : ($SKB_CLONE) SKB clones send before alloc new SKB
        -b : ($BURST)     HW level bursting of SKBs
        -v : ($VERBOSE)   verbose
        -x : ($DEBUG)     debug
      
      Removing pktgen.conf-2-1 and pktgen.conf-2-2 as these examples
      should be covered now.
      Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      282fb589
    • Jesper Dangaard Brouer's avatar
      pktgen: add sample script pktgen_sample01_simple.sh · 6f094797
      Jesper Dangaard Brouer authored
      Add the first basic pktgen samples script pktgen_sample01_simple.sh,
      which demonstrates the a simple use of the helper functions.
      Removing pktgen.conf-1-1 as that example should be covered now.
      
      The naming scheme pktgen_sampleNN, where NN is a number, should encourage
      reading the samples in a specific order.
      
      Script cause pktgen sending with a single thread and single interface,
      and introduce flow variation via random UDP source port.
      
      Usage example and help:
       ./pktgen_sample01_simple.sh -i eth4 -m 00:1B:21:3C:9D:F8 -d 192.168.8.2
      
      Usage: ./pktgen_sample01_simple.sh [-vx] -i ethX
        -i : ($DEV)       output interface/device (required)
        -s : ($PKT_SIZE)  packet size
        -d : ($DEST_IP)   destination IP
        -m : ($DST_MAC)   destination MAC-addr
        -c : ($SKB_CLONE) SKB clones send before alloc new SKB
        -v : ($VERBOSE)   verbose
        -x : ($DEBUG)     debug
      Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6f094797
    • Jesper Dangaard Brouer's avatar
      pktgen: new pktgen helper functions for samples scripts · b64b0d1e
      Jesper Dangaard Brouer authored
      Preparing for removing existing samples/pktgen/ scripts, and
      replacing these with easier to use samples.
      
      This commit provides two helper shell files, that can
      be "included" by shell source'ing. Namely "functions.sh"
      and "parameters.sh".
      
      The parameters.sh file support easy and consistant parameter
      parsing across the sample scripts.  Usage example is printed on
      errors.
      
      The functions.sh file provides, three new shell functions for
      configuring the different components of pktgen: pg_ctrl(),
      pg_thread() and pg_set().  A slightly improved version of the old
      pgset() function is also provided for backwards compat.
      
      The new 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
      
      These changes are borrowed from:
       https://github.com/netoptimizer/network-testing/tree/master/pktgenSigned-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      b64b0d1e
    • Jesper Dangaard Brouer's avatar
      pktgen: make /proc/net/pktgen/pgctrl report fail on invalid input · 40207264
      Jesper Dangaard Brouer authored
      Giving /proc/net/pktgen/pgctrl an invalid command just returns shell
      success and prints a warning in dmesg.  This is not very useful for
      shell scripting, as it can only detect the error by parsing dmesg.
      
      Instead return -EINVAL when the command is unknown, as this provides
      userspace shell scripting a way of detecting this.
      
      Also bump version tag to 2.75, because (1) reading /proc/net/pktgen/pgctrl
      output this version number which would allow to detect this small
      semantic change, and (2) because the pktgen version tag have not been
      updated since 2010.
      Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      40207264
    • Jesper Dangaard Brouer's avatar
      pktgen: document ability to add same device to several threads · 2a1ddf27
      Jesper Dangaard Brouer authored
      The pktgen.txt documentation still claimed that adding same device to
      multiple threads were not supported, but it have been since 2008 via
      commit e6fce5b9 ("pktgen: multiqueue etc.").
      
      Document this and describe the naming scheme dev@X, as the procfile name
      still need to be unique.
      
      Fixes: e6fce5b9 ("pktgen: multiqueue etc.")
      Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Acked-by: default avatarAlexei Starovoitov <ast@plumgrid.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2a1ddf27
    • Jesper Dangaard Brouer's avatar
      pktgen: doc were missing several config options · 91db4b3c
      Jesper Dangaard Brouer authored
      The pktgen.txt documentation over available config options were not complete.
      Making the list complete by adding the following.
      
      Pgcontrol commands:
       reset
      
      Device commands:
       burst
       queue_map_min
       queue_map_max
       skb_priority
       tos
       traffic_class
       node
       spi
       dst6_max
       dst6_min
       vlan_cfi
       vlan_id
       vlan_p
       svlan_cfi
       svlan_id
       svlan_p
      Signed-off-by: default avatarJesper Dangaard Brouer <brouer@redhat.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      91db4b3c