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 properlySigned-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
23 May, 2011
2 commits
-
This also shrinks the object size a little.
text data bss dec hex filename
28834 186 8 29028 7164 net/core/pktgen.o
28816 186 8 29010 7152 net/core/pktgen.o.AFTERSigned-off-by: WANG Cong
Cc: "David Miller" ,
Signed-off-by: David S. Miller -
Signed-off-by: WANG Cong
Cc: "David S. Miller"
Signed-off-by: David S. Miller
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. -
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
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
09 May, 2011
1 commit
-
I don't know why %pI6 doesn't compress, but the format specifier is
kernel-standard, so use it.Signed-off-by: Alexey Dobriyan
Signed-off-by: David S. Miller
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
17 Apr, 2011
1 commit
-
"iph" in pktgen_output_ipsec() is set but never actually
used. Kill it off.Signed-off-by: David S. Miller
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
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
11 Mar, 2011
1 commit
-
Conflicts:
drivers/net/bnx2x/bnx2x_cmn.c
10 Mar, 2011
1 commit
-
The units in show_results in pktgen were not correct.
The results are in usec but it was displayed nsec.Reported-by: Jong-won Lee
Signed-off-by: Daniel Turull
Signed-off-by: David S. Miller
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: 0After patch :
Result: OK: 345285014(c345283891+d1123) nsec, 1000000000
(100byte,1frags)
2896158pps 2316Mb/sec (2316926400bps) errors: 0Signed-off-by: Eric Dumazet
Signed-off-by: David S. Miller
21 Dec, 2010
1 commit
-
Remove "pktgen: " prefix string from one pr_info.
pr_fmt adds it, so this is a duplicate.Signed-off-by: Joe Perches
Signed-off-by: David S. Miller
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
29 Nov, 2010
1 commit
-
When testing struct netdev_queue state against FROZEN bit, we also test
XOFF bit. We can test both bits at once and save some cycles.Signed-off-by: Eric Dumazet
Signed-off-by: David S. Miller
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.cSigned-off-by: Eric Dumazet
Signed-off-by: David S. Miller
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
09 Nov, 2010
1 commit
-
This fix a bug reported by backyes.
Right the first time pktgen's using queue_map that's not been initialized
by set_cur_queue_map(pkt_dev);Signed-off-by: Junchang Wang
Signed-off-by: Backyes
Signed-off-by: David S. Miller
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 castSigned-off-by: Dmitry Torokhov
Reviewed-by: Nelson Elhage
Signed-off-by: David S. Miller
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
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
22 Sep, 2010
1 commit
-
Signed-off-by: Andy Shevchenko
Signed-off-by: David S. Miller
01 Sep, 2010
1 commit
-
remove non used variable "queue" in pg_cleanup
Signed-off-by: Eric Dumazet
Signed-off-by: David S. Miller
24 Jul, 2010
1 commit
-
Signed-off-by: Andy Shevchenko
Signed-off-by: David S. Miller
13 Jul, 2010
1 commit
-
Signed-off-by: Joe Perches
Signed-off-by: David S. Miller
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 formatsSigned-off-by: Joe Perches
Signed-off-by: David S. Miller
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
11 Jun, 2010
1 commit
-
This patch correct a bug in the delay of pktgen.
It makes sure the inter-packet interval is accurate.Signed-off-by: Daniel Turull
Signed-off-by: Robert Olsson
Signed-off-by: David S. Miller
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 parameterTested 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
23 Feb, 2010
1 commit
-
pass mark to all SA lookups to prepare them for when we add code
to have them search.Signed-off-by: Jamal Hadi Salim
Signed-off-by: David S. Miller
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
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
30 Nov, 2009
1 commit
-
Not including net/atm/
Compiled tested x86 allyesconfig only
Added a > 80 column line or two, which I ignored.
Existing checkpatch plaints willfully, cheerfully ignored.Signed-off-by: Joe Perches
Signed-off-by: David S. Miller
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=384Signed-off-by: Eric Dumazet
Signed-off-by: David S. Miller -
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
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
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 threadpgset "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
06 Nov, 2009
1 commit
-
cur_pkt_size can be changed in proc fs while pktgen is running,
we better use a private field to get precise tx-bytes counter.Signed-off-by: Ben Greear
Signed-off-by: Eric Dumazet
Signed-off-by: David S. Miller