1. 22 7月, 2006 1 次提交
  2. 15 7月, 2006 1 次提交
  3. 13 7月, 2006 3 次提交
    • H
      [IPV4]: Fix error handling for fib_insert_node call · b47b2ec1
      Herbert Xu 提交于
      The error handling around fib_insert_node was broken because we always
      zeroed the error before checking it.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      b47b2ec1
    • H
      [IPCOMP]: Fix truesize after decompression · da952315
      Herbert Xu 提交于
      The truesize check has uncovered the fact that we forgot to update truesize
      after pskb_expand_head.  Unfortunately pskb_expand_head can't update it for
      us because it's used in all sorts of different contexts, some of which would
      not allow truesize to be updated by itself.
      
      So the solution for now is to simply update it in IPComp.
      
      This patch also changes skb_put to __skb_put since we've just expanded
      tailroom by exactly that amount so we know it's there (but gcc does not).
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      da952315
    • X
      [TCP] tcp_highspeed: Fix AI updates. · 6150c22e
      Xiaoliang (David) Wei 提交于
      I think there is still a problem with the AIMD parameter update in
      HighSpeed TCP code.
      
      Line 125~138 of the code (net/ipv4/tcp_highspeed.c):
      
      	/* Update AIMD parameters */
      	if (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd) {
      		while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd &&
      		       ca->ai < HSTCP_AIMD_MAX - 1)
      			ca->ai++;
      	} else if (tp->snd_cwnd < hstcp_aimd_vals[ca->ai].cwnd) {
      		while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd &&
      		       ca->ai > 0)
      			ca->ai--;
      
      In fact, the second part (decreasing ca->ai) never decreases since the
      while loop's inequality is in the reverse direction. This leads to
      unfairness with multiple flows (once a flow happens to enjoy a higher
      ca->ai, it keeps enjoying that even its cwnd decreases)
      
      Here is a tentative fix (I also added a comment, trying to keep the
      change clear):
      Acked-by: NStephen Hemminger <shemminger@osdl.org>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      6150c22e
  4. 11 7月, 2006 2 次提交
  5. 09 7月, 2006 3 次提交
  6. 04 7月, 2006 5 次提交
  7. 01 7月, 2006 6 次提交
    • H
      [IPV6]: Added GSO support for TCPv6 · f83ef8c0
      Herbert Xu 提交于
      This patch adds GSO support for IPv6 and TCPv6.  This is based on a patch
      by Ananda Raju <Ananda.Raju@neterion.com>.  His original description is:
      
      	This patch enables TSO over IPv6. Currently Linux network stacks
      	restricts TSO over IPv6 by clearing of the NETIF_F_TSO bit from
      	"dev->features". This patch will remove this restriction.
      
      	This patch will introduce a new flag NETIF_F_TSO6 which will be used
      	to check whether device supports TSO over IPv6. If device support TSO
      	over IPv6 then we don't clear of NETIF_F_TSO and which will make the
      	TCP layer to create TSO packets. Any device supporting TSO over IPv6
      	will set NETIF_F_TSO6 flag in "dev->features" along with NETIF_F_TSO.
      
      	In case when user disables TSO using ethtool, NETIF_F_TSO will get
      	cleared from "dev->features". So even if we have NETIF_F_TSO6 we don't
      	get TSO packets created by TCP layer.
      
      	SKB_GSO_TCPV4 renamed to SKB_GSO_TCP to make it generic GSO packet.
      	SKB_GSO_UDPV4 renamed to SKB_GSO_UDP as UFO is not a IPv4 feature.
      	UFO is supported over IPv6 also
      
      	The following table shows there is significant improvement in
      	throughput with normal frames and CPU usage for both normal and jumbo.
      
      	--------------------------------------------------
      	|          |     1500        |      9600         |
      	|          ------------------|-------------------|
      	|          | thru     CPU    |  thru     CPU     |
      	--------------------------------------------------
      	| TSO OFF  | 2.00   5.5% id  |  5.66   20.0% id  |
      	--------------------------------------------------
      	| TSO ON   | 2.63   78.0 id  |  5.67   39.0% id  |
      	--------------------------------------------------
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f83ef8c0
    • H
      [NET]: Generalise TSO-specific bits from skb_setup_caps · bcd76111
      Herbert Xu 提交于
      This patch generalises the TSO-specific bits from sk_setup_caps by adding
      the sk_gso_type member to struct sock.  This makes sk_setup_caps generic
      so that it can be used by TCPv6 or UFO.
      
      The only catch is that whoever uses this must provide a GSO implementation
      for their protocol which I think is a fair deal :) For now UFO continues to
      live without a GSO implementation which is OK since it doesn't use the sock
      caps field at the moment.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      bcd76111
    • H
      [IPV6]: Added GSO support for TCPv6 · adcfc7d0
      Herbert Xu 提交于
      This patch adds GSO support for IPv6 and TCPv6.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      adcfc7d0
    • P
      [NETFILTER]: SCTP conntrack: fix crash triggered by packet without chunks · dd7271fe
      Patrick McHardy 提交于
      When a packet without any chunks is received, the newconntrack variable
      in sctp_packet contains an out of bounds value that is used to look up an
      pointer from the array of timeouts, which is then dereferenced, resulting
      in a crash. Make sure at least a single chunk is present.
      
      Problem noticed by George A. Theall <theall@tenablesecurity.com>
      Signed-off-by: NPatrick McHardy <kaber@trash.net>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      dd7271fe
    • H
      [TCP]: Reset gso_segs if packet is dodgy · 3820c3f3
      Herbert Xu 提交于
      I wasn't paranoid enough in verifying GSO information.  A bogus gso_segs
      could upset drivers as much as a bogus header would.  Let's reset it in
      the per-protocol gso_segment functions.
      
      I didn't verify gso_size because that can be verified by the source of
      the dodgy packets.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      3820c3f3
    • J
      Remove obsolete #include <linux/config.h> · 6ab3d562
      Jörn Engel 提交于
      Signed-off-by: NJörn Engel <joern@wohnheim.fh-wedel.de>
      Signed-off-by: NAdrian Bunk <bunk@stusta.de>
      6ab3d562
  8. 30 6月, 2006 7 次提交
  9. 26 6月, 2006 3 次提交
  10. 23 6月, 2006 3 次提交
    • H
      [IPSEC]: Handle GSO packets · 09b8f7a9
      Herbert Xu 提交于
      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: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      09b8f7a9
    • H
      [NET]: Add software TSOv4 · f4c50d99
      Herbert Xu 提交于
      This patch adds the GSO implementation for IPv4 TCP.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      f4c50d99
    • H
      [NET]: Merge TSO/UFO fields in sk_buff · 7967168c
      Herbert Xu 提交于
      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: NHerbert Xu <herbert@gondor.apana.org.au>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      7967168c
  11. 18 6月, 2006 6 次提交