28 Jul, 2011

1 commit

  • Pktgen attempts to transmit shared skbs to net devices, which can't be used by
    some drivers as they keep state information in skbs. This patch adds a flag
    marking drivers as being able to handle shared skbs in their tx path. Drivers
    are defaulted to being unable to do so, but calling ether_setup enables this
    flag, as 90% of the drivers calling ether_setup touch real hardware and can
    handle shared skbs. A subsequent patch will audit drivers to ensure that the
    flag is set properly

    Signed-off-by: Neil Horman
    Reported-by: Jiri Pirko
    CC: Robert Olsson
    CC: Eric Dumazet
    CC: Alexey Dobriyan
    CC: David S. Miller
    Signed-off-by: David S. Miller

    Neil Horman
     

23 May, 2011

2 commits


21 May, 2011

2 commits

  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6: (1446 commits)
    macvlan: fix panic if lowerdev in a bond
    tg3: Add braces around 5906 workaround.
    tg3: Fix NETIF_F_LOOPBACK error
    macvlan: remove one synchronize_rcu() call
    networking: NET_CLS_ROUTE4 depends on INET
    irda: Fix error propagation in ircomm_lmp_connect_response()
    irda: Kill set but unused variable 'bytes' in irlan_check_command_param()
    irda: Kill set but unused variable 'clen' in ircomm_connect_indication()
    rxrpc: Fix set but unused variable 'usage' in rxrpc_get_transport()
    be2net: Kill set but unused variable 'req' in lancer_fw_download()
    irda: Kill set but unused vars 'saddr' and 'daddr' in irlan_provider_connect_indication()
    atl1c: atl1c_resume() is only used when CONFIG_PM_SLEEP is defined.
    rxrpc: Fix set but unused variable 'usage' in rxrpc_get_peer().
    rxrpc: Kill set but unused variable 'local' in rxrpc_UDP_error_handler()
    rxrpc: Kill set but unused variable 'sp' in rxrpc_process_connection()
    rxrpc: Kill set but unused variable 'sp' in rxrpc_rotate_tx_window()
    pkt_sched: Kill set but unused variable 'protocol' in tc_classify()
    isdn: capi: Use pr_debug() instead of ifdefs.
    tg3: Update version to 3.119
    tg3: Apply rx_discards fix to 5719/5720
    ...

    Fix up trivial conflicts in arch/x86/Kconfig and net/mac80211/agg-tx.c
    as per Davem.

    Linus Torvalds
     
  • Commit e66eed651fd1 ("list: remove prefetching from regular list
    iterators") removed the include of prefetch.h from list.h, which
    uncovered several cases that had apparently relied on that rather
    obscure header file dependency.

    So this fixes things up a bit, using

    grep -L linux/prefetch.h $(git grep -l '[^a-z_]prefetchw*(' -- '*.[ch]')
    grep -L 'prefetchw*(' $(git grep -l 'linux/prefetch.h' -- '*.[ch]')

    to guide us in finding files that either need
    inclusion, or have it despite not needing it.

    There are more of them around (mostly network drivers), but this gets
    many core ones.

    Reported-by: Stephen Rothwell
    Signed-off-by: Linus Torvalds

    Linus Torvalds
     

10 May, 2011

1 commit

  • mac_pton() parses MAC address in form XX:XX:XX:XX:XX:XX and only in that form.

    mac_pton() doesn't dirty result until it's sure string representation is valid.

    mac_pton() doesn't care about characters _after_ last octet,
    it's up to caller to deal with it.

    mac_pton() diverges from 0/-E return value convention.
    Target usage:

    if (!mac_pton(str, whatever->mac))
    return -EINVAL;
    /* ->mac being u8 [ETH_ALEN] is filled at this point. */
    /* optionally check str[3 * ETH_ALEN - 1] for termination */

    Use mac_pton() in pktgen and netconsole for start.

    Signed-off-by: Alexey Dobriyan
    Signed-off-by: David S. Miller

    Alexey Dobriyan
     

09 May, 2011

1 commit


30 Apr, 2011

1 commit

  • Pktgen doesn't generate number of frags requested.
    Divide packet size by number of frags and fill that in every frags.

    Example:
    With packet size 1470, it generate only 11 frags. Initial frags
    get lenght 706, 353, 177....so on. Last frag get divided by 2.

    Now with this fix, each frags will get 78 bytes.

    Signed-off-by: Amit Kumar Salecha
    Signed-off-by: David S. Miller

    amit salecha
     

17 Apr, 2011

1 commit


23 Mar, 2011

1 commit

  • ksoftirqd, kworker, migration, and pktgend kthreads can be created with
    kthread_create_on_node(), to get proper NUMA affinities for their stack and
    task_struct.

    Signed-off-by: Eric Dumazet
    Acked-by: David S. Miller
    Reviewed-by: Andi Kleen
    Acked-by: Rusty Russell
    Acked-by: Tejun Heo
    Cc: Tony Luck
    Cc: Fenghua Yu
    Cc: David Howells
    Cc:
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Eric Dumazet
     

15 Mar, 2011

1 commit

  • (bug introduced by commit 26ad787962ef84677a48c560
    (pktgen: speedup fragmented skbs)

    The headers of pktgen were incorrectly added in a pktgen packet
    without frags (frags=0). There was an offset in the pktgen headers.

    The cause was in reusing the pgh variable as a return variable in skb_put
    when adding the payload to the skb.

    Signed-off-by: Daniel Turull
    Signed-off-by: David S. Miller
    Signed-off-by: Eric Dumazet

    Daniel Turull
     

11 Mar, 2011

1 commit


10 Mar, 2011

1 commit


26 Jan, 2011

1 commit

  • We spend lot of time clearing pages in pktgen.
    (Or not clearing them on ipv6 and leaking kernel memory)

    Since we dont modify them, we can use one zeroed page, and get
    references on it. This page can use NUMA affinity as well.

    Define pktgen_finalize_skb() helper, used both in ipv4 and ipv6

    Results using skbs with one frag :

    Before patch :

    Result: OK: 608980458(c608978520+d1938) nsec, 1000000000
    (100byte,1frags)
    1642088pps 1313Mb/sec (1313670400bps) errors: 0

    After patch :

    Result: OK: 345285014(c345283891+d1123) nsec, 1000000000
    (100byte,1frags)
    2896158pps 2316Mb/sec (2316926400bps) errors: 0

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     

21 Dec, 2010

1 commit


11 Dec, 2010

1 commit

  • We know for sure pktgen is going to write skb->data right after
    *_alloc_skb, causing unnecessary cache misses.

    Idea is to add a prefetchw() call to prefetch the first cache line
    indicated by skb->data. On systems with Adjacent Cache Line Prefetch,
    it's probably two cache lines are prefetched.

    With this patch, pktgen on Intel SR1625 server with two E5530
    quad-core processors and a single ixgbe-based NIC went from 8.63Mpps
    to 9.03Mpps, with 4.6% improvement.

    Signed-off-by: Junchang Wang
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Junchang Wang
     

29 Nov, 2010

1 commit


22 Nov, 2010

1 commit

  • Unloading pktgen module needs ~6 seconds on a 64 cpus machine, to stop
    64 kthreads.

    Add a pktgen_exiting variable to let kernel threads die faster, so that
    kthread_stop() doesnt have to wait too long for them. This variable is
    not tested in fast path.

    Note : Before exiting from pktgen_thread_worker(), we must make sure
    kthread_stop() is waiting for this thread to be stopped, like its done
    in kernel/softirq.c

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     

19 Nov, 2010

1 commit

  • Add option to set skb priority to pktgen. Useful for testing
    QOS features. Also by running pktgen on the vlan device the
    qdisc on the real device can be tested.

    Signed-off-by: John Fastabend
    Acked-by: Eric Dumazet
    Signed-off-by: David S. Miller

    John Fastabend
     

09 Nov, 2010

1 commit


07 Nov, 2010

1 commit

  • This should fix the following warning:

    net/core/pktgen.c: In function ‘pktgen_if_write’:
    net/core/pktgen.c:890: warning: comparison of distinct pointer types lacks a cast

    Signed-off-by: Dmitry Torokhov
    Reviewed-by: Nelson Elhage
    Signed-off-by: David S. Miller

    Dmitry Torokhov
     

29 Oct, 2010

1 commit

  • A program that accidentally writes too much data to the pktgen file can overflow
    the kernel stack and oops the machine. This is only triggerable by root, so
    there's no security issue, but it's still an unfortunate bug.

    printk() won't print more than 1024 bytes in a single call, anyways, so let's
    just never copy more than that much data. We're on a fairly shallow stack, so
    that should be safe even with CONFIG_4KSTACKS.

    Signed-off-by: Nelson Elhage
    Signed-off-by: David S. Miller

    Nelson Elhage
     

25 Oct, 2010

1 commit

  • The temporary variable "i" is needlessly initialized to zero
    in two distinct cases in this file:

    1) where it is set to zero and then used as an argument in an addition
    before being assigned a non-zero value.

    2) where it is only used in a standard/typical loop counter

    For (1), simply delete assignment to zero and usages while still
    zero; for (2) simply make the loop start at zero as per standard
    practice as seen everywhere else in the same file.

    Signed-off-by: Paul Gortmaker
    Signed-off-by: David S. Miller

    Paul Gortmaker
     

22 Sep, 2010

1 commit


01 Sep, 2010

1 commit


24 Jul, 2010

1 commit


13 Jul, 2010

1 commit


26 Jun, 2010

1 commit

  • Add pr_fmt(fmt) KBUILD_MODNAME ": " fmt
    Remove "pktgen: " from formats
    Convert printks to pr_
    Added func_enter() for debugging
    Moved version to end of string at module_init
    Coalesced long formats

    Signed-off-by: Joe Perches
    Signed-off-by: David S. Miller

    Joe Perches
     

12 Jun, 2010

1 commit

  • This patch increases the granularity of the rate generated by pktgen.
    The previous version of pktgen uses micro seconds (udelay) resolution when it
    was delayed causing gaps in the rates. It is changed to nanosecond (ndelay).
    Now any rate is possible.

    Also it allows to set, the desired rate in Mb/s or packets per second.

    The documentation has been updated.

    Signed-off-by: Daniel Turull
    Signed-off-by: Robert Olsson
    Signed-off-by: David S. Miller

    Daniel Turull
     

11 Jun, 2010

1 commit


22 Mar, 2010

1 commit

  • Here is patch to manipulate packet node allocation and implicitly
    how packets are DMA'd etc.

    The flag NODE_ALLOC enables the function and numa_node_id();
    when enabled it can also be explicitly controlled via a new
    node parameter

    Tested this with 10 Intel 82599 ports w. TYAN S7025 E5520 CPU's.
    Was able to TX/DMA ~80 Gbit/s to Ethernet wires.

    Signed-off-by: Robert Olsson
    Signed-off-by: David S. Miller

    Robert Olsson
     

23 Feb, 2010

1 commit


05 Feb, 2010

1 commit

  • Add missing try_to_freeze() to one of the pktgen_thread_worker() code
    paths so that it doesn't block suspend/hibernation.

    Fixes http://bugzilla.kernel.org/show_bug.cgi?id=15006

    Signed-off-by: Rafael J. Wysocki
    Reported-and-tested-by: Ciprian Dorin Craciun
    Signed-off-by: David S. Miller

    Rafael J. Wysocki
     

24 Dec, 2009

1 commit

  • This updates pktgen so that it does not decrement skb->users
    when it receives valid NET_XMIT_xxx values. These are now
    valid return values from ndo_start_xmit in net-next-2.6.
    They also indicate the skb has been consumed.

    This fixes pktgen to work correctly with vlan devices.

    Signed-off-by: John Fastabend
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    John Fastabend
     

30 Nov, 2009

1 commit


29 Nov, 2009

2 commits

  • pktgen threads are bound to given CPU, we can allocate memory for
    these threads in a NUMA aware way.

    After a pktgen session on two threads, we can check flows memory was
    allocated on right node, instead of a not related one.

    # grep pktgen_thread_write /proc/vmallocinfo
    0xffffc90007204000-0xffffc90007385000 1576960 pktgen_thread_write+0x3a4/0x6b0 [pktgen] pages=384 vmalloc N0=384
    0xffffc90007386000-0xffffc90007507000 1576960 pktgen_thread_write+0x3a4/0x6b0 [pktgen] pages=384 vmalloc N1=384

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     
  • Conflicts:
    drivers/ieee802154/fakehard.c
    drivers/net/e1000e/ich8lan.c
    drivers/net/e1000e/phy.c
    drivers/net/netxen/netxen_nic_init.c
    drivers/net/wireless/ath/ath9k/main.c

    David S. Miller
     

25 Nov, 2009

1 commit

  • When multi queue compatable names are used by pktgen (eg eth0@0),
    we currently cannot unload a NIC driver if one of its device
    is currently in use.

    Allow pktgen_find_dev() to find pktgen devices by their suffix (netdev name)

    Signed-off-by: Eric Dumazet
    Signed-off-by: David S. Miller

    Eric Dumazet
     

24 Nov, 2009

1 commit

  • Commit e6fce5b916cd7f7f7 (pktgen: multiqueue etc.) tried to relax
    the pktgen restriction of one device per kernel thread, adding a '@'
    tag to device names.

    Problem is we dont perform check on full pktgen device name.
    This allows adding many time same 'device' to pktgen thread

    pgset "add_device eth0@0"

    one session later :

    pgset "add_device eth0@0"

    (This doesnt find previous device)

    This consumes ~1.5 MBytes of vmalloc memory per round and also triggers
    this warning :

    [ 673.186380] proc_dir_entry 'pktgen/eth0@0' already registered
    [ 673.186383] Modules linked in: pktgen ixgbe ehci_hcd psmouse mdio mousedev evdev [last unloaded: pktgen]
    [ 673.186406] Pid: 6219, comm: bash Tainted: G W 2.6.32-rc7-03302-g41cec6f-dirty #16
    [ 673.186410] Call Trace:
    [ 673.186417] [] warn_slowpath_common+0x7b/0xc0
    [ 673.186422] [] warn_slowpath_fmt+0x41/0x50
    [ 673.186426] [] proc_register+0x109/0x210
    [ 673.186433] [] ? apic_timer_interrupt+0xe/0x20
    [ 673.186438] [] proc_create_data+0x75/0xd0
    [ 673.186444] [] pktgen_thread_write+0x568/0x640 [pktgen]
    [ 673.186449] [] ? pktgen_thread_write+0x0/0x640 [pktgen]
    [ 673.186453] [] proc_reg_write+0x84/0xc0
    [ 673.186458] [] vfs_write+0xb8/0x180
    [ 673.186463] [] sys_write+0x51/0x90
    [ 673.186468] [] system_call_fastpath+0x16/0x1b
    [ 673.186470] ---[ end trace ccbb991b0a8d994d ]---

    Solution to this problem is to use a odevname field (includes @ tag and suffix),
    instead of using netdevice name.

    Signed-off-by: Eric Dumazet
    Signed-off-by: Robert Olsson
    Signed-off-by: David S. Miller

    Eric Dumazet
     

06 Nov, 2009

1 commit