1. 23 Jun, 2006 12 commits
    • Randy Dunlap's avatar
      [NET]: fix net-core kernel-doc · f4b8ea78
      Randy Dunlap authored
      
      
      Warning(/var/linsrc/linux-2617-g4//include/linux/skbuff.h:304): No description found for parameter 'dma_cookie'
      Warning(/var/linsrc/linux-2617-g4//include/net/sock.h:1274): No description found for parameter 'copied_early'
      Warning(/var/linsrc/linux-2617-g4//net/core/dev.c:3309): No description found for parameter 'chan'
      Warning(/var/linsrc/linux-2617-g4//net/core/dev.c:3309): No description found for parameter 'event'
      Signed-off-by: default avatarRandy Dunlap <rdunlap@xenotime.net>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f4b8ea78
    • David Woodhouse's avatar
      [TCP]: Move inclusion of <linux/dmaengine.h> to correct place in <linux/tcp.h> · c8a553ad
      David Woodhouse authored
      
      
      The new <linux/dmaengine.h> header shouldn't be included from
      the !__KERNEL__ portion of tcp.h
      Signed-off-by: default avatarDavid Woodhouse <dwmw2@infradead.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      c8a553ad
    • Herbert Xu's avatar
      [IPSEC]: Handle GSO packets · 09b8f7a9
      Herbert Xu authored
      
      
      This patch segments GSO packets received by the IPsec stack.  This can
      happen when a NIC driver injects GSO packets into the stack which are
      then forwarded to another host.
      
      The primary application of this is going to be Xen where its backend
      driver may inject GSO packets into dom0.
      
      Of course this also can be used by other virtualisation schemes such as
      VMWare or UML since the tap device could be modified to inject GSO packets
      received through splice.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      09b8f7a9
    • Herbert Xu's avatar
      [NET]: Added GSO toggle · 37c3185a
      Herbert Xu authored
      
      
      This patch adds a generic segmentation offload toggle that can be turned
      on/off for each net device.  For now it only supports in TCPv4.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      37c3185a
    • Herbert Xu's avatar
      [NET]: Add software TSOv4 · f4c50d99
      Herbert Xu authored
      
      
      This patch adds the GSO implementation for IPv4 TCP.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f4c50d99
    • Herbert Xu's avatar
      [NET]: Add generic segmentation offload · f6a78bfc
      Herbert Xu authored
      
      
      This patch adds the infrastructure for generic segmentation offload.
      The idea is to tap into the potential savings of TSO without hardware
      support by postponing the allocation of segmented skb's until just
      before the entry point into the NIC driver.
      
      The same structure can be used to support software IPv6 TSO, as well as
      UFO and segmentation offload for other relevant protocols, e.g., DCCP.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      f6a78bfc
    • Herbert Xu's avatar
      [NET]: Merge TSO/UFO fields in sk_buff · 7967168c
      Herbert Xu authored
      
      
      Having separate fields in sk_buff for TSO/UFO (tso_size/ufo_size) is not
      going to scale if we add any more segmentation methods (e.g., DCCP).  So
      let's merge them.
      
      They were used to tell the protocol of a packet.  This function has been
      subsumed by the new gso_type field.  This is essentially a set of netdev
      feature bits (shifted by 16 bits) that are required to process a specific
      skb.  As such it's easy to tell whether a given device can process a GSO
      skb: you just have to and the gso_type field and the netdev's features
      field.
      
      I've made gso_type a conjunction.  The idea is that you have a base type
      (e.g., SKB_GSO_TCPV4) that can be modified further to support new features.
      For example, if we add a hardware TSO type that supports ECN, they would
      declare NETIF_F_TSO | NETIF_F_TSO_ECN.  All TSO packets with CWR set would
      have a gso_type of SKB_GSO_TCPV4 | SKB_GSO_TCPV4_ECN while all other TSO
      packets would be SKB_GSO_TCPV4.  This means that only the CWR packets need
      to be emulated in software.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      7967168c
    • Herbert Xu's avatar
      [NET]: Prevent transmission after dev_deactivate · d4828d85
      Herbert Xu authored
      
      
      The dev_deactivate function has bit-rotted since the introduction of
      lockless drivers.  In particular, the spin_unlock_wait call at the end
      has no effect on the xmit routine of lockless drivers.
      
      With a little bit of work, we can make it much more useful by providing
      the guarantee that when it returns, no more calls to the xmit routine
      of the underlying driver will be made.
      
      The idea is simple.  There are two entry points in to the xmit routine.
      The first comes from dev_queue_xmit.  That one is easily stopped by
      using synchronize_rcu.  This works because we set the qdisc to noop_qdisc
      before the synchronize_rcu call.  That in turn causes all subsequent
      packets sent to dev_queue_xmit to be dropped.  The synchronize_rcu call
      also ensures all outstanding calls leave their critical section.
      
      The other entry point is from qdisc_run.  Since we now have a bit that
      indicates whether it's running, all we have to do is to wait until the
      bit is off.
      
      I've removed the loop to wait for __LINK_STATE_SCHED to clear.  This is
      useless because netif_wake_queue can cause it to be set again.  It is
      also harmless because we've disarmed qdisc_run.
      
      I've also removed the spin_unlock_wait on xmit_lock because its only
      purpose of making sure that all outstanding xmit_lock holders have
      exited is also given by dev_watchdog_down.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      d4828d85
    • YOSHIFUJI Hideaki's avatar
      [IPV6] ADDRCONF: Fix default source address selection without CONFIG_IPV6_PRIVACY · 5e2707fa
      YOSHIFUJI Hideaki authored
      
      
      We need to update hiscore.rule even if we don't enable CONFIG_IPV6_PRIVACY,
      because we have more less significant rule; longest match.
      Signed-off-by: default avatarYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5e2707fa
    • Łukasz Stelmach's avatar
      [IPV6]: Fix source address selection. · 102128e3
      Łukasz Stelmach authored
      
      
      Two additional labels (RFC 3484, sec. 10.3) for IPv6 addreses
      are defined to make a distinction between global unicast
      addresses and Unique Local Addresses (fc00::/7, RFC 4193) and
      Teredo (2001::/32, RFC 4380). It is necessary to avoid attempts
      of connection that would either fail (eg. fec0:: to 2001:feed::)
      or be sub-optimal (2001:0:: to 2001:feed::).
      Signed-off-by: default avatarŁukasz Stelmach <stlman@poczta.fm>
      Signed-off-by: default avatarYOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      102128e3
    • Herbert Xu's avatar
      [NET]: Avoid allocating skb in skb_pad · 5b057c6b
      Herbert Xu authored
      
      
      First of all it is unnecessary to allocate a new skb in skb_pad since
      the existing one is not shared.  More importantly, our hard_start_xmit
      interface does not allow a new skb to be allocated since that breaks
      requeueing.
      
      This patch uses pskb_expand_head to expand the existing skb and linearize
      it if needed.  Actually, someone should sift through every instance of
      skb_pad on a non-linear skb as they do not fit the reasons why this was
      originally created.
      
      Incidentally, this fixes a minor bug when the skb is cloned (tcpdump,
      TCP, etc.).  As it is skb_pad will simply write over a cloned skb.  Because
      of the position of the write it is unlikely to cause problems but still
      it's best if we don't do it.
      Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      5b057c6b
    • Linus Torvalds's avatar
      Merge master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6 · 5fa21d82
      Linus Torvalds authored
      * master.kernel.org:/pub/scm/linux/kernel/git/gregkh/usb-2.6:
        [PATCH] Driver core: fix locking issues with the devices that are attached to classes
        [PATCH] USB: get USB suspend to work again
      5fa21d82
  2. 22 Jun, 2006 28 commits