16 Dec, 2008
14 commits
-
This patch adds GRO support for IPv4.
The criteria for merging is more stringent than LRO, in particular,
we require all fields in the IP header to be identical except for
the length, ID and checksum. In addition, the ID must form an
arithmetic sequence with a difference of one.The ID requirement might seem overly strict, however, most hardware
TSO solutions already obey this rule. Linux itself also obeys this
whether GSO is in use or not.In future we could relax this rule by storing the IDs (or rather
making sure that we don't drop them when pulling the aggregate
skb's tail).Signed-off-by: Herbert Xu
Signed-off-by: David S. Miller -
This patch adds the top-level GRO (Generic Receive Offload) infrastructure.
This is pretty similar to LRO except that this is protocol-independent.
Instead of holding packets in an lro_mgr structure, they're now held in
napi_struct.For drivers that intend to use this, they can set the NETIF_F_GRO bit and
call napi_gro_receive instead of netif_receive_skb or just call netif_rx.
The latter will call napi_receive_skb automatically. When napi_gro_receive
is used, the driver must either call napi_complete/napi_rx_complete, or
call napi_gro_flush in softirq context if the driver uses the primitives
__napi_complete/__napi_rx_complete.Protocols will set the gro_receive and gro_complete function pointers in
order to participate in this scheme.In addition to the packet, gro_receive will get a list of currently held
packets. Each packet in the list has a same_flow field which is non-zero
if it is a potential match for the new packet. For each packet that may
match, they also have a flush field which is non-zero if the held packet
must not be merged with the new packet.Once gro_receive has determined that the new skb matches a held packet,
the held packet may be processed immediately if the new skb cannot be
merged with it. In this case gro_receive should return the pointer to
the existing skb in gro_list. Otherwise the new skb should be merged into
the existing packet and NULL should be returned, unless the new skb makes
it impossible for any further merges to be made (e.g., FIN packet) where
the merged skb should be returned.Whenever the skb is merged into an existing entry, the gro_receive
function should set NAPI_GRO_CB(skb)->same_flow. Note that if an skb
merely matches an existing entry but can't be merged with it, then
this shouldn't be set.If gro_receive finds it pointless to hold the new skb for future merging,
it should set NAPI_GRO_CB(skb)->flush.Held packets will be flushed by napi_gro_flush which is called by
napi_complete and napi_rx_complete.Currently held packets are stored in a singly liked list just like LRO.
The list is limited to a maximum of 8 entries. In future, this may be
expanded to use a hash table to allow more flows to be held for merging.Signed-off-by: Herbert Xu
Signed-off-by: David S. Miller -
This patch allows GSO to handle frag_list in a limited way for the
purposes of allowing packets merged by GRO to be refragmented on
output.Most hardware won't (and aren't expected to) support handling GRO
frag_list packets directly. Therefore we will perform GSO in
software for those cases.However, for drivers that can support it (such as virtual NICs) we
may not have to segment the packets at all.Whether the added overhead of GRO/GSO is worthwhile for bridges
and routers when weighed against the benefit of potentially
increasing the MTU within the host is still an open question.
However, for the case of host nodes this is undoubtedly a win.Signed-off-by: Herbert Xu
Signed-off-by: David S. Miller -
This patch adds limited support for handling frag_list packets in
skb_segment. The intention is to support GRO (Generic Receive Offload)
packets which will be constructed by chaining normal packets using
frag_list.As such we require all frag_list members terminate on exact MSS
boundaries. This is checked using BUG_ON.As there should only be one producer in the kernel of such packets,
namely GRO, this requirement should not be difficult to maintain.Signed-off-by: Herbert Xu
Signed-off-by: David S. Miller -
Conflicts:
drivers/net/e1000e/ich8lan.c
-
* master.kernel.org:/home/rmk/linux-2.6-arm:
[ARM] 5348/1: fix documentation wrt location of the alignment trap interface
[ARM] Ensure linux/hardirqs.h is included where required
[ARM] fix kernel-doc syntax
[ARM] arch/arm/common/sa1111.c: Correct error handling code
[ARM] 5341/2: there is no copy_page on nommu ARM -
* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
Phonet: keep TX queue disabled when the device is off
SCHED: netem: Correct documentation comment in code.
netfilter: update rwlock initialization for nat_table
netlabel: Compiler warning and NULL pointer dereference fix
e1000e: fix double release of mutex
IA64: HP_SIMETH needs to depend upon NET
netpoll: fix race on poll_list resulting in garbage entry
ipv6: silence log messages for locally generated multicast
sungem: improve ethtool output with internal pcs and serdes
tcp: tcp_vegas cong avoid fix
sungem: Make PCS PHY support partially work again. -
Otherwise those using it in transition patches (eg. kvm) can't compile
with CONFIG_SMP=n:arch/x86/kvm/../../../virt/kvm/kvm_main.c: In function 'make_all_cpus_request':
arch/x86/kvm/../../../virt/kvm/kvm_main.c:380: error: implicit declaration of function 'smp_call_function_many'Signed-off-by: Rusty Russell
Signed-off-by: Linus Torvalds -
When a cgroup is removed, it's unlinked from its parent's children list,
but not actually freed until the last dentry on it is released (at which
point cgrp->root->number_of_cgroups is decremented).Currently rebind_subsystems checks for the top cgroup's child list being
empty in order to rebind subsystems into or out of a hierarchy - this can
result in the set of subsystems bound to a hierarchy being
removed-but-not-freed cgroup.The simplest fix for this is to forbid remounts that change the set of
subsystems on a hierarchy that has removed-but-not-freed cgroups. This
bug can be reproduced via:mkdir /mnt/cg
mount -t cgroup -o ns,freezer cgroup /mnt/cg
mkdir /mnt/cg/foo
sleep 1h < /mnt/cg/foo &
rmdir /mnt/cg/foo
mount -t cgroup -o remount,ns,devices,freezer cgroup /mnt/cg
kill $!Though the above will cause oops in -mm only but not mainline, but the bug
can cause memory leak in mainline (and even oops)Signed-off-by: Paul Menage
Reviewed-by: Li Zefan
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Part of the rfkill initialization was done whenever BT was on or not. The
following patch checks for BT presence before registering the rfkill to
the input layer. Some minor cleanups (> 80 char lines) were also added in
the process.On Tue, Oct 28, 2008 at 10:10:37PM +0300, Andrey Borzenkov wrote:
[...]
> [ 66.633036] toshiba_acpi: Toshiba Laptop ACPI Extras version 0.19
> [ 66.633054] toshiba_acpi: HCI method: \_SB_.VALD.GHCI
> [ 66.637764] input: Toshiba RFKill Switch as /devices/virtual/input/input3
[...]
> [ 113.920753] ------------[ cut here ]------------
> [ 113.920828] kernel BUG at /home/bor/src/linux-git/net/rfkill/rfkill.c:347!
> [ 113.920845] invalid opcode: 0000 [#1]
> [ 113.920877] last sysfs file: /sys/devices/pci0000:00/0000:00:04.0/host0/target0:0:0/0:0:0:0/block/sda/size
> [ 113.920900] Dumping ftrace buffer:
> [ 113.920919] (ftrace buffer empty)
> [ 113.920933] Modules linked in: af_packet irnet ppp_generic slhc ircomm_tty ircomm binfmt_misc loop dm_mirror dm_region_hash dm_log dm_round_robin dm_multipath dm_mod alim15x3 ide_core nvram toshiba cryptomgr aead crypto_blkcipher michael_mic crypto_algapi orinoco_cs orinoco hermes_dld hermes pcmcia firmware_class snd_ali5451 snd_ac97_codec ac97_bus snd_seq_dummy snd_seq_oss snd_seq_midi_event snd_seq snd_seq_device smsc_ircc2 snd_pcm_oss snd_pcm rtc_cmos irda snd_timer snd_mixer_oss rtc_core snd crc_ccitt yenta_socket rtc_lib rsrc_nonstatic i2c_ali1535 pcmcia_core pcspkr psmouse soundcore i2c_core evdev sr_mod snd_page_alloc alim1535_wdt cdrom fan sg video output toshiba_acpi rfkill thermal backlight ali_agp processor ac button input_polldev battery agpgart ohci_hcd usbcore reiserfs pata_ali libata sd_mod scsi_mod [last unloaded: scsi_wait_scan]
> [ 113.921765]
> [ 113.921785] Pid: 3272, comm: ipolldevd Not tainted (2.6.28-rc2-1avb #3) PORTEGE 4000
> [ 113.921801] EIP: 0060:[] EFLAGS: 00010246 CPU: 0
> [ 113.921854] EIP is at rfkill_force_state+0x53/0x90 [rfkill]
> [ 113.921870] EAX: 00000000 EBX: 00000000 ECX: 00000003 EDX: 00000000
> [ 113.921885] ESI: 00000000 EDI: ddd50300 EBP: d8d7af40 ESP: d8d7af24
> [ 113.921900] DS: 007b ES: 007b FS: 0000 GS: 0000 SS: 0068
> [ 113.921918] Process ipolldevd (pid: 3272, ti=d8d7a000 task=d8d93c90 task.ti=d8d7a000)
> [ 113.921933] Stack:
> [ 113.921945] d8d7af38 00000246 dfb029d8 dfb029c0 dfb029d8 dfb029c0 ddd50300 d8d7af5c
> [ 113.922014] dfb018e2 01000246 01000000 ddd50300 ddd50314 ddabb8a0 d8d7af68 dfb381c1
> [ 113.922098] 00000000 d8d7afa4 c012ec0a 00000000 00000002 00000000 c012eba8 ddabb8c0
> [ 113.922240] Call Trace:
> [ 113.922240] [] ? bt_poll_rfkill+0x5c/0x82 [toshiba_acpi]
> [ 113.922240] [] ? input_polled_device_work+0x11/0x40 [input_polldev]
> [ 113.922240] [] ? run_workqueue+0xea/0x1f0
> [ 113.922240] [] ? run_workqueue+0x88/0x1f0
> [ 113.922240] [] ? input_polled_device_work+0x0/0x40 [input_polldev]
> [ 113.922240] [] ? worker_thread+0x87/0xf0
> [ 113.922240] [] ? autoremove_wake_function+0x0/0x50
> [ 113.922240] [] ? worker_thread+0x0/0xf0
> [ 113.922240] [] ? kthread+0x3f/0x80
> [ 113.922240] [] ? kthread+0x0/0x80
> [ 113.922240] [] ? kernel_thread_helper+0x7/0x10
> [ 113.922240] Code: 43 54 89 73 54 39 c6 74 11 89 d9 ba 01 00 00 00 b8 40 68 aa df e8 3e 35 69 e0 89 f8 e8 77 fd 85 e0 31 c0 83 c4 10 5b 5e 5f 5d c3 0b eb fe 89 f6 8d bc 27 00 00 00 00 be f4 4d aa df bb 5f 01
> [ 113.922240] EIP: [] rfkill_force_state+0x53/0x90 [rfkill] SS:ESP 0068:d8d7af24
> [ 113.924700] ---[ end trace 0e404eb40cadd5f0 ]---Signed-off-by: Frederik Deweerdt
Tested-by: Andrey Borzenkov
Acked-by: Len Brown
Cc: Richard Purdie
Acked-by: Philip Langdale
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Tyler Hicks and Dustin Kirkland are now the primary contact points for
eCryptfs issues that may arise from this point forward.Signed-off-by: Michael Halcrow
Acked-by: Tyler Hicks
Acked-by: Dustin Kirkland
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
The kmem_cache_create() function in the slob allocator passes the SLAB
flags as GFP flags to the slob_alloc() function. The patch changes this
call to pass GFP_KERNEL as the other allocators seem to do.Signed-off-by: Catalin Marinas
Acked-by: Matt Mackall
Cc: Cyrill Gorcunov
Cc: Christoph Lameter
Cc: Pekka Enberg
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Cc: Michael Hennerich
Signed-off-by: Mike Frysinger
Signed-off-by: Bryan Wu
Cc: Dominik Brodowski
Signed-off-by: Andrew Morton
Signed-off-by: Linus Torvalds -
Based upon a report from Randy Dunlap.
The compat netdev ops assignments need to happen in
8390.c and 8390p.c, not lib8390.c, as only the type
specific code can assign the correct function pointers.Signed-off-by: David S. Miller
15 Dec, 2008
22 commits
-
Signed-off-by: Nicolas Pitre
Signed-off-by: Russell King -
... for the removal of it from asm-generic/local.h
Signed-off-by: Russell King
-
dcbml_setnumtcs wasn't checking for the presence of the setnumtcs
function. Instead, it was checking for setstate which was a bug.Signed-off-by: Don Skidmore
Signed-off-by: Eric W Multanen
Signed-off-by: Peter P Waskiewicz Jr
Signed-off-by: Jeff Kirsher
Signed-off-by: David S. Miller -
This issue was initially reported by Joerg Roedel
It appears that ixgbe has had a long standing bug where it was unmapping a different size than it had mapped.ixgbe 0000:02:00.0: PCI-DMA: device driver frees DMA memory with different sizes than it mapped.
ixgbe 0000:02:00.0: PCI-DMA: device driver frees DMA memory with different size [device address=0x0000000003fed812] [map size=258 bytes] [unmap size=256 bytes]
Pid: 6178, comm: rmmod Not tainted 2.6.28-rc5 #4 Call Trace:
[] iommu_queue_inv_iommu_pages+0x5e/0x70
[] check_unmap+0x1c6/0x240 [] debug_unmap_single+0xb5/0x110 [] ixgbe_clean_rx_ring+0x147/0x220 [] ixgbe_down+0x2fd/0x3d0 [ixgbe] [] ixgbe_close+0x13/0xc0 [ixgbe] [] dev_close+0x56/0xa0 [] rollback_registered+0x43/0x220 [] unregister_netdevice+0x15/0x60 [] unregister_netdev+0x11/0x20 [] ixgbe_remove+0x48/0x16e [ixgbe] [] pci_device_remove+0x2c/0x60 [] __device_release_driver+0x99/0x100
[] driver_detach+0xb8/0xc0 [] bus_remove_driver+0x8e/0xd0 [] pci_unregister_driver+0x34/0x90 [] sys_delete_module+0x1c7/0x2a0 [] do_munmap+0x349/0x390 [] __up_write+0x21/0x150 [] system_call_fastpath+0x16/0x1bSigned-off-by: Jesse Brandeburg
Signed-off-by: Jeff Kirsher
Signed-off-by: David S. Miller -
This patch adds support for SMSC's LAN9420 PCI ethernet controller
to ethtool's dump registers (-d) command.This patch is for use with an accompanying ethtool patch, which decodes
the register dump.Signed-off-by: Steve Glendinning
Signed-off-by: David S. Miller -
Signed-off-by: Rémi Denis-Courmont
Signed-off-by: David S. Miller -
The netem simulator is no longer limited by Linux timer resolution HZ.
Not since Patrick McHardy changed the QoS system to use hrtimer.Signed-off-by: Jesper Dangaard Brouer
Signed-off-by: David S. Miller -
The commit e099a173573ce1ba171092aee7bb3c72ea686e59
(netfilter: netns nat: per-netns NAT table) renamed the
nat_table from __nat_table to nat_table without updating the
__RW_LOCK_UNLOCKED(__nat_table.lock).Signed-off-by: Steven Rostedt
Signed-off-by: David S. Miller -
Signed-off-by: Ilpo Järvinen
Signed-off-by: David S. Miller -
Signed-off-by: Ilpo Järvinen
Signed-off-by: David S. Miller -
Signed-off-by: Ilpo Järvinen
Signed-off-by: David S. Miller -
Signed-off-by: Ilpo Järvinen
Signed-off-by: David S. Miller -
Signed-off-by: Ilpo Järvinen
Signed-off-by: David S. Miller -
Signed-off-by: Ilpo Järvinen
Signed-off-by: David S. Miller -
Signed-off-by: Ilpo Järvinen
Signed-off-by: David S. Miller -
Signed-off-by: Ilpo Järvinen
Signed-off-by: David S. Miller -
Signed-off-by: Ilpo Järvinen
Signed-off-by: David S. Miller -
Signed-off-by: Ilpo Järvinen
Signed-off-by: David S. Miller -
Signed-off-by: Ilpo Järvinen
Signed-off-by: David S. Miller -
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc:
powerpc/fsl-booke: Fix problem with _tlbil_va being interrupted -
VMI initialiation can relocate the fixmap, causing early_ioremap to
malfunction if it is initialized before the relocation. To fix this,
VMI activation is split into two phases; the detection, which must
happen before setting up ioremap, and the activation, which must happen
after parsing early boot parameters.This fixes a crash on boot when VMI is enabled under VMware.
Signed-off-by: Zachary Amsden
Signed-off-by: Linus Torvalds -
This reverts commit 5b7dba4ff834259a5623e03a565748704a8fe449, which
caused a regression in hibernate, reported by and bisected by Fabio
Comolli.This revert fixes
http://bugzilla.kernel.org/show_bug.cgi?id=12155
http://bugzilla.kernel.org/show_bug.cgi?id=12149Bisected-by: Fabio Comolli
Requested-by: Rafael J. Wysocki
Acked-by: Dave Kleikamp
Cc: Peter Zijlstra
Cc: Ingo Molnar
Signed-off-by: Linus Torvalds
14 Dec, 2008
4 commits
-
Fix kernel-doc notation to use correct syntax. Even though this should be
moved to where the function is actually implemented...Signed-off-by: Randy Dunlap
Signed-off-by: Andrew Morton
Signed-off-by: Russell King -
If it is reasonable to apply PTR_ERR to the result of calling clk_get, then
that result should first be tested with IS_ERR, not with !.The semantic patch that makes this change is as follows:
(http://www.emn.fr/x-info/coccinelle/)//
@@
expression E,E1;
@@if (
- E == NULL
+ IS_ERR(E)
) { }
//Signed-off-by: Julia Lawall
Signed-off-by: Russell King -
An example calling sequence which we did see:
copy_user_highpage -> kmap_atomic -> flush_tlb_page -> _tlbil_va
We got interrupted after setting up the MAS registers before the
tlbwe and the interrupt handler that caused the interrupt also did
a kmap_atomic (ide code) and thus on returning from the interrupt
the MAS registers no longer contained the proper values.Since we dont save/restore MAS registers for normal interrupts we
need to disable interrupts in _tlbil_va to ensure atomicity.Signed-off-by: Kumar Gala
-
* 'merge' of git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx:
powerpc/40x: Add proper BOOTCFLAGS for cuboot-acadia