1. 03 8月, 2006 3 次提交
  2. 26 7月, 2006 2 次提交
  3. 25 7月, 2006 4 次提交
  4. 22 7月, 2006 3 次提交
  5. 15 7月, 2006 1 次提交
  6. 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
  7. 11 7月, 2006 2 次提交
  8. 09 7月, 2006 3 次提交
  9. 04 7月, 2006 5 次提交
  10. 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
  11. 30 6月, 2006 7 次提交
  12. 26 6月, 2006 1 次提交
    • H
      [NET]: Fix CHECKSUM_HW GSO problems. · 0718bcc0
      Herbert Xu 提交于
      Fix checksum problems in the GSO code path for CHECKSUM_HW packets.
      
      The ipv4 TCP pseudo header checksum has to be adjusted for GSO
      segmented packets.
      
      The adjustment is needed because the length field in the pseudo-header
      changes.  However, because we have the inequality oldlen > newlen, we
      know that delta = (u16)~oldlen + newlen is still a 16-bit quantity.
      This also means that htonl(delta) + th->check still fits in 32 bits.
      Therefore we don't have to use csum_add on this operations.
      
      This is based on a patch by Michael Chan <mchan@broadcom.com>.
      Signed-off-by: NHerbert Xu <herbert@gondor.apana.org.au>
      Acked-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      0718bcc0