1. 16 Dec, 2008 14 commits
    • Herbert Xu's avatar
      net: Add skb_gro_receive · 71d93b39
      Herbert Xu authored
      This patch adds the helper skb_gro_receive to merge packets for
      GRO.  The current method is to allocate a new header skb and then
      chain the original packets to its frag_list.  This is done to
      make it easier to integrate into the existing GSO framework.
      
      In future as GSO is moved into the drivers, we can undo this and
      simply chain the original packets together.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      71d93b39
    • Herbert Xu's avatar
      ipv4: Add GRO infrastructure · 73cc19f1
      Herbert Xu authored
      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: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      73cc19f1
    • Herbert Xu's avatar
      net: Add Generic Receive Offload infrastructure · d565b0a1
      Herbert Xu authored
      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: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d565b0a1
    • Herbert Xu's avatar
      net: Add frag_list support to GSO · 1a881f27
      Herbert Xu authored
      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: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      1a881f27
    • Herbert Xu's avatar
      net: Add frag_list support to skb_segment · 89319d38
      Herbert Xu authored
      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: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      89319d38
    • David S. Miller's avatar
      Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 · eb14f019
      David S. Miller authored
      Conflicts:
      
      	drivers/net/e1000e/ich8lan.c
      eb14f019
    • Linus Torvalds's avatar
      Merge master.kernel.org:/home/rmk/linux-2.6-arm · a3dd1544
      Linus Torvalds authored
      * 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
      a3dd1544
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6 · 7004405c
      Linus Torvalds authored
      * 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.
      7004405c
    • Rusty Russell's avatar
      Define smp_call_function_many for UP · d2ff9118
      Rusty Russell authored
      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: default avatarRusty Russell <rusty@rustcorp.com.au>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d2ff9118
    • Paul Menage's avatar
      cgroups: fix a race between rmdir and remount · 307257cf
      Paul Menage authored
      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: default avatarPaul Menage <menage@google.com>
      Reviewed-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      307257cf
    • Frederik Deweerdt's avatar
      ACPI toshiba: only register rfkill if bt is enabled · 38aefbc5
      Frederik Deweerdt authored
      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:[<dfaa4683>] 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]  [<dfb018e2>] ? bt_poll_rfkill+0x5c/0x82 [toshiba_acpi]
      > [  113.922240]  [<dfb381c1>] ? input_polled_device_work+0x11/0x40 [input_polldev]
      > [  113.922240]  [<c012ec0a>] ? run_workqueue+0xea/0x1f0
      > [  113.922240]  [<c012eba8>] ? run_workqueue+0x88/0x1f0
      > [  113.922240]  [<dfb381b0>] ? input_polled_device_work+0x0/0x40 [input_polldev]
      > [  113.922240]  [<c012f047>] ? worker_thread+0x87/0xf0
      > [  113.922240]  [<c0132b00>] ? autoremove_wake_function+0x0/0x50
      > [  113.922240]  [<c012efc0>] ? worker_thread+0x0/0xf0
      > [  113.922240]  [<c013280f>] ? kthread+0x3f/0x80
      > [  113.922240]  [<c01327d0>] ? kthread+0x0/0x80
      > [  113.922240]  [<c01040d7>] ? 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 <0f> 0b eb fe 89 f6 8d bc 27 00 00 00 00 be f4 4d aa df bb 5f 01
      > [  113.922240] EIP: [<dfaa4683>] rfkill_force_state+0x53/0x90 [rfkill] SS:ESP 0068:d8d7af24
      > [  113.924700] ---[ end trace 0e404eb40cadd5f0 ]---
      Signed-off-by: default avatarFrederik Deweerdt <frederik.deweerdt@gmail.com>
      Tested-by: default avatarAndrey Borzenkov <arvidjaar@mail.ru>
      Acked-by: default avatarLen Brown <len.brown@intel.com>
      Cc: Richard Purdie <rpurdie@rpsys.net>
      Acked-by: default avatarPhilip Langdale <philipl@overt.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      38aefbc5
    • Michael Halcrow's avatar
      eCryptfs: Update maintainers · 6dc7516e
      Michael Halcrow authored
      Tyler Hicks and Dustin Kirkland are now the primary contact points for
      eCryptfs issues that may arise from this point forward.
      Signed-off-by: default avatarMichael Halcrow <mhalcrow@us.ibm.com>
      Acked-by: default avatarTyler Hicks <tyhicks@linux.vnet.ibm.com>
      Acked-by: default avatarDustin Kirkland <kirkland@canonical.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      6dc7516e
    • Catalin Marinas's avatar
      slob: do not pass the SLAB flags as GFP in kmem_cache_create() · 5e18e2b8
      Catalin Marinas authored
      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: default avatarCatalin Marinas <catalin.marinas@arm.com>
      Acked-by: default avatarMatt Mackall <mpm@selenic.com>
      Cc: Cyrill Gorcunov <gorcunov@gmail.com>
      Cc: Christoph Lameter <cl@linux-foundation.org>
      Cc: Pekka Enberg <penberg@cs.helsinki.fi>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      5e18e2b8
    • Mike Frysinger's avatar
      pcmcia: blackfin: fix bug - add missing ; to MODULE macro · 35024c38
      Mike Frysinger authored
      Cc: Michael Hennerich <michael.hennerich@analog.com>
      Signed-off-by: default avatarMike Frysinger <vapier.adi@gmail.com>
      Signed-off-by: default avatarBryan Wu <cooloney@kernel.org>
      Cc: Dominik Brodowski <linux@dominikbrodowski.net>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      35024c38
  2. 15 Dec, 2008 23 commits
  3. 14 Dec, 2008 2 commits
  4. 13 Dec, 2008 1 commit
    • Kumar Gala's avatar
      powerpc/fsl-booke: Fix problem with _tlbil_va being interrupted · e5e774d8
      Kumar Gala authored
      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: default avatarKumar Gala <galak@kernel.crashing.org>
      e5e774d8