1. 30 Apr, 2007 38 commits
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6 · 40caf5ea
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6: (56 commits)
        ieee1394: remove garbage from Kconfig
        ieee1394: more help in Kconfig
        ieee1394: ohci1394: Fix mistake in printk message.
        ieee1394: ohci1394: remove unnecessary rcvPhyPkt bit flipping in LinkControl register
        ieee1394: ohci1394: fix cosmetic problem in error logging
        ieee1394: eth1394: send async streams at S100 on 1394b buses
        ieee1394: eth1394: fix error path in module_init
        ieee1394: eth1394: correct return codes in hard_start_xmit
        ieee1394: eth1394: hard_start_xmit is called in atomic context
        ieee1394: eth1394: some conditions are unlikely
        ieee1394: eth1394: clean up fragment_overlap
        ieee1394: eth1394: don't use alloc_etherdev
        ieee1394: eth1394: omit useless set_mac_address callback
        ieee1394: eth1394: CONFIG_INET is always defined
        ieee1394: eth1394: allow MTU bigger than 1500
        ieee1394: unexport highlevel_host_reset
        ieee1394: eth1394: contain host reset
        ieee1394: eth1394: shorter error messages
        ieee1394: eth1394: correct a memset argument
        ieee1394: eth1394: refactor .probe and .update
        ...
      40caf5ea
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jikos/hid · d6454706
      Linus Torvalds authored
      * 'for-linus' of master.kernel.org:/pub/scm/linux/kernel/git/jikos/hid: (21 commits)
        USB HID: don't warn on idVendor == 0
        USB HID: add 'quirks' module parameter
        USB HID: add support for dynamically-created quirks
        USB HID: clarify static quirk handling as squirks
        USB HID: encapsulate quirk handling into hid-quirks.c
        USB HID: EMS USBII device needs HID_QUIRK_MULTI_INPUT
        HID: update copyright and authorship macro
        HID: introduce proper zeroing of unused bits in output reports
        USB HID: add support for WiseGroup MP-8800 Quad Joypad
        USB HID: add FF support for Logitech Force 3D Pro Joystick
        USB HID: numlock quirk for dell W7658 keyboard
        USB HID: Logitech MX3000 keyboard needs report descriptor quirk
        USB HID: extend quirk for Logitech S510 keyboard
        USB HID: usbkbd/usbmouse - handle errors when registering devices
        USB HID: add QUIRK_HIDDEV for Belkin Flip KVM
        HID: enable dead keys on a belkin wireless keyboard
        USB HID: Thustmaster firestorm dual power v1 support
        USB HID: specify explicit size for hid_blacklist.quirks
        USB HID: fix retry & reset logic
        USB HID: consolidate vendor/product ids
        ...
      d6454706
    • Linus Torvalds's avatar
      Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 · 152a6a9d
      Linus Torvalds authored
      * master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (21 commits)
        [IPV4] SNMP: Support OutMcastPkts and OutBcastPkts
        [IPV4] SNMP: Support InMcastPkts and InBcastPkts
        [IPV4] SNMP: Support InTruncatedPkts
        [IPV4] SNMP: Support InNoRoutes
        [SNMP]: Add definitions for {In,Out}BcastPkts
        [TCP] FRTO: RFC4138 allows Nagle override when new data must be sent
        [TCP] FRTO: Delay skb available check until it's mandatory
        [XFRM]: Restrict upper layer information by bundle.
        [TCP]: Catch skb with S+L bugs earlier
        [PATCH] INET : IPV4 UDP lookups converted to a 2 pass algo
        [L2TP]: Add the ability to autoload a pppox protocol module.
        [SKB]: Introduce skb_queue_walk_safe()
        [AF_IUCV/IUCV]: smp_call_function deadlock
        [IPV6]: Fix slab corruption running ip6sic
        [TCP]: Update references in two old comments
        [XFRM]: Export SPD info
        [IPV6]: Track device renames in snmp6.
        [SCTP]: Fix sctp_getsockopt_local_addrs_old() to use local storage.
        [NET]: Remove NETIF_F_INTERNAL_STATS, default to internal stats.
        [NETPOLL]: Remove CONFIG_NETPOLL_RX
        ...
      152a6a9d
    • Linus Torvalds's avatar
      Merge branch 'for-linus' of git://git.kernel.dk/data/git/linux-2.6-block · cd9bb7e7
      Linus Torvalds authored
      * 'for-linus' of git://git.kernel.dk/data/git/linux-2.6-block:
        [PATCH] elevator: elv_list_lock does not need irq disabling
        [BLOCK] Don't pin lots of memory in mempools
        cfq-iosched: speedup cic rb lookup
        ll_rw_blk: add io_context private pointer
        cfq-iosched: get rid of cfqq hash
        cfq-iosched: tighten queue request overlap condition
        cfq-iosched: improve sync vs async workloads
        cfq-iosched: never allow an async queue idling
        cfq-iosched: get rid of ->dispatch_slice
        cfq-iosched: don't pass unused preemption variable around
        cfq-iosched: get rid of ->cur_rr and ->cfq_list
        cfq-iosched: slice offset should take ioprio into account
        [PATCH] cfq-iosched: style cleanups and comments
        cfq-iosched: sort IDLE queues into the rbtree
        cfq-iosched: sort RT queues into the rbtree
        [PATCH] cfq-iosched: speed up rbtree handling
        cfq-iosched: rework the whole round-robin list concept
        cfq-iosched: minor updates
        cfq-iosched: development update
        cfq-iosched: improve preemption for cooperating tasks
      cd9bb7e7
    • Linus Torvalds's avatar
      Merge branch 'for-2.6.22' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc · 24a77daf
      Linus Torvalds authored
      * 'for-2.6.22' of git://git.kernel.org/pub/scm/linux/kernel/git/paulus/powerpc: (255 commits)
        [POWERPC] Remove dev_dbg redefinition in drivers/ps3/vuart.c
        [POWERPC] remove kernel module option for booke wdt
        [POWERPC] Avoid putting cpu node twice
        [POWERPC] Spinlock initializer cleanup
        [POWERPC] ppc4xx_sgdma needs dma-mapping.h
        [POWERPC] arch/powerpc/sysdev/timer.c build fix
        [POWERPC] get_property cleanups
        [POWERPC] Remove the unused HTDMSOUND driver
        [POWERPC] cell: cbe_cpufreq cleanup and crash fix
        [POWERPC] Declare enable_kernel_spe in a header
        [POWERPC] Add dt_xlate_addr() to bootwrapper
        [POWERPC] bootwrapper: CONFIG_ -> CONFIG_DEVICE_TREE
        [POWERPC] Don't define a custom bd_t for Xilixn Virtex based boards.
        [POWERPC] Add sane defaults for Xilinx EDK generated xparameters files
        [POWERPC] Add uartlite boot console driver for the zImage wrapper
        [POWERPC] Stop using ppc_sys for Xilinx Virtex boards
        [POWERPC] New registration for common Xilinx Virtex ppc405 platform devices
        [POWERPC] Merge common virtex header files
        [POWERPC] Rework Kconfig dependancies for Xilinx Virtex ppc405 platform
        [POWERPC] Clean up cpufreq Kconfig dependencies
        ...
      24a77daf
    • Mitsuru Chinen's avatar
      [IPV4] SNMP: Support OutMcastPkts and OutBcastPkts · 80787ebc
      Mitsuru Chinen authored
      
      
      A transmitted IP multicast datagram should be counted as OutMcastPkts.
      By the same token, a transmitted IP broadcast datagram should be
      counted as OutBcastPkts.
      Signed-off-by: default avatarMitsuru Chinen <mitch@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      80787ebc
    • Mitsuru Chinen's avatar
      [IPV4] SNMP: Support InMcastPkts and InBcastPkts · 5506b54b
      Mitsuru Chinen authored
      
      
      A received IP multicast datagram should be counted as InMcastPkts.
      By the same token, a received IP broadcast datagram should be
      counted as InBcastPkts.
      Signed-off-by: default avatarMitsuru Chinen <mitch@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5506b54b
    • Mitsuru Chinen's avatar
      [IPV4] SNMP: Support InTruncatedPkts · 704aed53
      Mitsuru Chinen authored
      
      
      An IP datagram which is being discarded because the datagram frame
      didn't carry enough data should be counted as InTruncatedPkts.
      Signed-off-by: default avatarMitsuru Chinen <mitch@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      704aed53
    • Mitsuru Chinen's avatar
      [IPV4] SNMP: Support InNoRoutes · e91a47eb
      Mitsuru Chinen authored
      
      
      An IP datagram which is being discarded because of no routes in the
      forwarding path should be counted as InNoRoutes.
      Signed-off-by: default avatarMitsuru Chinen <mitch@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      e91a47eb
    • Mitsuru Chinen's avatar
      [SNMP]: Add definitions for {In,Out}BcastPkts · 71ff6c0a
      Mitsuru Chinen authored
      
      
      The updated IP-MIB RFC (RFC4293) specifys new objects, InBcastPkts
      and OutBcastPkts. This adds definitions for them.
      Signed-off-by: default avatarMitsuru Chinen <mitch@linux.vnet.ibm.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      71ff6c0a
    • Ilpo Järvinen's avatar
      [TCP] FRTO: RFC4138 allows Nagle override when new data must be sent · d551e454
      Ilpo Järvinen authored
      
      
      This is a corner case where less than MSS sized new data thingie
      is awaiting in the send queue. For F-RTO to work correctly, a
      new data segment must be sent at certain point or F-RTO cannot
      be used at all. RFC4138 allows overriding of Nagle at that
      point.
      
      Implementation uses frto_counter states 2 and 3 to distinguish
      when Nagle override is needed.
      Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d551e454
    • Ilpo Järvinen's avatar
      [TCP] FRTO: Delay skb available check until it's mandatory · 575ee714
      Ilpo Järvinen authored
      
      
      No new data is needed until the first ACK comes, so no need to check
      for application limitedness until then.
      Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      575ee714
    • Masahide NAKAMURA's avatar
      [XFRM]: Restrict upper layer information by bundle. · 157bfc25
      Masahide NAKAMURA authored
      
      
      On MIPv6 usage, XFRM sub policy is enabled.
      When main (IPsec) and sub (MIPv6) policy selectors have the same
      address set but different upper layer information (i.e. protocol
      number and its ports or type/code), multiple bundle should be created.
      However, currently we have issue to use the same bundle created for
      the first time with all flows covered by the case.
      
      It is useful for the bundle to have the upper layer information
      to be restructured correctly if it does not match with the flow.
      
      1. Bundle was created by two policies
      Selector from another policy is added to xfrm_dst.
      If the flow does not match the selector, it goes to slow path to
      restructure new bundle by single policy.
      
      2. Bundle was created by one policy
      Flow cache is added to xfrm_dst as originated one. If the flow does
      not match the cache, it goes to slow path to try searching another
      policy.
      Signed-off-by: default avatarMasahide NAKAMURA <nakam@linux-ipv6.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      157bfc25
    • Ilpo Järvinen's avatar
      [TCP]: Catch skb with S+L bugs earlier · 34588b4c
      Ilpo Järvinen authored
      
      
      SACKED_ACKED and LOST are mutually exclusive with SACK, thus
      having their sum larger than packets_out is bug with SACK.
      Eventually these bugs trigger traps in the tcp_clean_rtx_queue
      with SACK but it's much more informative to do this here.
      
      Non-SACK TCP, however, could get more than packets_out duplicate
      ACKs which each increment sacked_out, so it makes sense to do
      this kind of limitting for non-SACK TCP but not for SACK enabled
      one. Perhaps the author had the opposite in mind but did the
      logic accidently wrong way around? Anyway, the sacked_out
      incrementer code for non-SACK already deals this issue before
      calling sync_left_out so this trapping can be done
      unconditionally.
      Signed-off-by: default avatarIlpo Järvinen <ilpo.jarvinen@helsinki.fi>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      34588b4c
    • Eric Dumazet's avatar
      [PATCH] INET : IPV4 UDP lookups converted to a 2 pass algo · 6aaf47fa
      Eric Dumazet authored
      
      
      Some people want to have many UDP sockets, binded to a single port but
      many different addresses. We currently hash all those sockets into a
      single chain.  Processing of incoming packets is very expensive,
      because the whole chain must be examined to find the best match.
      
      I chose in this patch to hash UDP sockets with a hash function that
      take into account both their port number and address : This has a
      drawback because we need two lookups : one with a given address, one
      with a wildcard (null) address.
      Signed-off-by: default avatarEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      6aaf47fa
    • James Chapman's avatar
      [L2TP]: Add the ability to autoload a pppox protocol module. · 65def812
      James Chapman authored
      
      
      This patch allows a name "pppox-proto-nnn" to be used in modprobe.conf
      to autoload a PPPoX protocol nnn.
      Signed-off-by: default avatarJames Chapman <jchapman@katalix.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      65def812
    • Jens Axboe's avatar
      Merge branch 'cfq' into for-linus · 07e44708
      Jens Axboe authored
      07e44708
    • Jens Axboe's avatar
      [PATCH] elevator: elv_list_lock does not need irq disabling · 2a12dcd7
      Jens Axboe authored
      
      
      It's never grabbed from irq context, so just make it plain spin_lock().
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      2a12dcd7
    • Jens Axboe's avatar
      [BLOCK] Don't pin lots of memory in mempools · 5972511b
      Jens Axboe authored
      
      
      Currently we scale the mempool sizes depending on memory installed
      in the machine, except for the bio pool itself which sits at a fixed
      256 entry pre-allocation.
      
      There's really no point in "optimizing" this OOM path, we just need
      enough preallocated to make progress. A single unit is enough, lets
      scale it down to 2 just to be on the safe side.
      
      This patch saves ~150kb of pinned kernel memory on a 32-bit box.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      5972511b
    • James Chapman's avatar
      [SKB]: Introduce skb_queue_walk_safe() · 46f8914e
      James Chapman authored
      
      
      This patch provides a method for walking skb lists while inserting or
      removing skbs from the list.
      Signed-off-by: default avatarJames Chapman <jchapman@katalix.com>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      46f8914e
    • Jens Axboe's avatar
      cfq-iosched: speedup cic rb lookup · 597bc485
      Jens Axboe authored
      
      
      We often lookup the same queue many times in succession, so cache
      the last looked up queue to avoid browsing the rbtree.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      597bc485
    • Jens Axboe's avatar
      ll_rw_blk: add io_context private pointer · 4e521c27
      Jens Axboe authored
      
      
      To be used by as/cfq as they see fit.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      4e521c27
    • Vasily Tarasov's avatar
      cfq-iosched: get rid of cfqq hash · 91fac317
      Vasily Tarasov authored
      
      
      cfq hash is no more necessary.  We always can get cfqq from io context.
      cfq_get_io_context_noalloc() function is introduced, because we don't
      want to allocate cic on merging and checking may_queue.  In order to
      identify sync queue we've used hash key = CFQ_KEY_ASYNC. Since hash is
      eliminated we need to use other criterion: sync flag for queue is added.
      In all places where we dig in rb_tree we're in current context, so no
      additional locking is required.
      
      Advantages of this patch: no additional memory for hash, no seeking in
      hash, code is cleaner. But it is necessary now to seek cic in per-ioc
      rbtree, but it is faster:
      - most processes work only with few devices
      - most systems have only few block devices
      - it is a rb-tree
      Signed-off-by: default avatarVasily Tarasov <vtaras@openvz.org>
      
      Changes by me:
      
      - Merge into CFQ devel branch
      - Get rid of cfq_get_io_context_noalloc()
      - Fix various bugs with dereferencing cic->cfqq[] with offset other
        than 0 or 1.
      - Fix bug in cfqq setup, is_sync condition was reversed.
      - Fix bug where only bio_sync() is used, we need to check for a READ too
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      91fac317
    • Jens Axboe's avatar
      cfq-iosched: tighten queue request overlap condition · cc197479
      Jens Axboe authored
      
      
      For tagged devices, allow overlap of requests if the idle window
      isn't enabled on the current active queue.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      cc197479
    • Jens Axboe's avatar
      3ed9a296
    • Jens Axboe's avatar
      cfq-iosched: never allow an async queue idling · 1be92f2f
      Jens Axboe authored
      
      
      We don't enable it by default, don't let it get enabled during
      runtime.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      1be92f2f
    • Jens Axboe's avatar
      cfq-iosched: get rid of ->dispatch_slice · 20e493a8
      Jens Axboe authored
      
      
      We can track it fairly accurately locally, let the slice handling
      take care of the rest.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      20e493a8
    • Jens Axboe's avatar
      cfq-iosched: don't pass unused preemption variable around · 6084cdda
      Jens Axboe authored
      
      
      We don't use it anymore in the slice expiry handling.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      6084cdda
    • Jens Axboe's avatar
      cfq-iosched: get rid of ->cur_rr and ->cfq_list · edd75ffd
      Jens Axboe authored
      
      
      It's only used for preemption now that the IDLE and RT queues also
      use the rbtree. If we pass an 'add_front' variable to
      cfq_service_tree_add(), we can set ->rb_key to 0 to force insertion
      at the front of the tree.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      edd75ffd
    • Jens Axboe's avatar
      cfq-iosched: slice offset should take ioprio into account · 67e6b49e
      Jens Axboe authored
      
      
      Use the max_slice-cur_slice as the multipler for the insertion offset.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      67e6b49e
    • Jens Axboe's avatar
      498d3aa2
    • Jens Axboe's avatar
      cfq-iosched: sort IDLE queues into the rbtree · 67060e37
      Jens Axboe authored
      
      
      Same treatment as the RT conversion, just put the sorted idle
      branch at the end of the tree.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      67060e37
    • Jens Axboe's avatar
      cfq-iosched: sort RT queues into the rbtree · 0c534e0a
      Jens Axboe authored
      
      
      Currently CFQ does a linked insert into the current list for RT
      queues. We can just factor the class into the rb insertion,
      and then we don't have to treat RT queues in a special way. It's
      faster, too.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      0c534e0a
    • Jens Axboe's avatar
      [PATCH] cfq-iosched: speed up rbtree handling · cc09e299
      Jens Axboe authored
      
      
      For cases where the rbtree is mainly used for sorting and min retrieval,
      a nice speedup of the rbtree code is to maintain a cache of the leftmost
      node in the tree.
      
      Also spotted in the CFS CPU scheduler code.
      
      Improved by Alan D. Brunelle <Alan.Brunelle@hp.com> by updating the
      leftmost hint in cfq_rb_first() if it isn't set, instead of only
      updating it on insert.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      cc09e299
    • Jens Axboe's avatar
      cfq-iosched: rework the whole round-robin list concept · d9e7620e
      Jens Axboe authored
      
      
      Drawing on some inspiration from the CFS CPU scheduler design, overhaul
      the pending cfq_queue concept list management. Currently CFQ uses a
      doubly linked list per priority level for sorting and service uses.
      Kill those lists and maintain an rbtree of cfq_queue's, sorted by when
      to service them.
      
      This unfortunately means that the ionice levels aren't as strong
      anymore, will work on improving those later. We only scale the slice
      time now, not the number of times we service. This means that latency
      is better (for all priority levels), but that the distinction between
      the highest and lower levels aren't as big.
      
      The diffstat speaks for itself.
      
       cfq-iosched.c |  363 +++++++++++++++++---------------------------------
       1 file changed, 125 insertions(+), 238 deletions(-)
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      d9e7620e
    • Jens Axboe's avatar
      cfq-iosched: minor updates · 1afba045
      Jens Axboe authored
      
      
      - Move the queue_new flag clear to when the queue is selected
      - Only select the non-first queue in cfq_get_best_queue(), if there's
        a substantial difference between the best and first.
      - Get rid of ->busy_rr
      - Only select a close cooperator, if the current queue is known to take
        a while to "think".
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      1afba045
    • Jens Axboe's avatar
      cfq-iosched: development update · 6d048f53
      Jens Axboe authored
      
      
      - Implement logic for detecting cooperating processes, so we
        choose the best available queue whenever possible.
      
      - Improve residual slice time accounting.
      
      - Remove dead code: we no longer see async requests coming in on
        sync queues. That part was removed a long time ago. That means
        that we can also remove the difference between cfq_cfqq_sync()
        and cfq_cfqq_class_sync(), they are now indentical. And we can
        kill the on_dispatch array, just make it a counter.
      
      - Allow a process to go into the current list, if it hasn't been
        serviced in this scheduler tick yet.
      
      Possible future improvements including caching the cfqq lookup
      in cfq_close_cooperator(), so we don't have to look it up twice.
      cfq_get_best_queue() should just use that last decision instead
      of doing it again.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      6d048f53
    • Jens Axboe's avatar
      cfq-iosched: improve preemption for cooperating tasks · 1e3335de
      Jens Axboe authored
      
      
      When testing the syslet async io approach, I discovered that CFQ
      sometimes didn't perform as well as expected. cfq_should_preempt()
      needs to better check for cooperating tasks, so fix that by allowing
      preemption of an equal priority queue if the recently queued request
      is as good a candidate for IO as the one we are currently waiting for.
      Signed-off-by: default avatarJens Axboe <jens.axboe@oracle.com>
      1e3335de
  2. 29 Apr, 2007 2 commits