diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-13 00:19:42 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-07-13 00:19:42 -0400 |
commit | e47f31787dee5bf57453e18edefff56e17fa44f9 (patch) | |
tree | 6c86b53192526bf9b7f6581720dbd12dc085aff5 /net/ipv4/tcp_highspeed.c | |
parent | a0486407bea3f0545ee3fcfb768b6763c5c2b459 (diff) | |
parent | a6f157a88d1398d7ccb743c5a56138edf6f6ef0b (diff) |
Merge commit master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 of HEAD
* HEAD:
[NET]: fix __sk_stream_mem_reclaim
[Bluetooth] Fix deadlock in the L2CAP layer
[Bluetooth] Let BT_HIDP depend on INPUT
[Bluetooth] Avoid NULL pointer dereference with tty->driver
[Bluetooth] Remaining transitions to use kzalloc()
[WAN]: converting generic HDLC to use netif_dormant*()
[IPV4]: Fix error handling for fib_insert_node call
[NETROM] lockdep: fix false positive
[ROSE] lockdep: fix false positive
[AX.25]: Optimize AX.25 socket list lock
[IPCOMP]: Fix truesize after decompression
[IPV6]: Use ipv6_addr_src_scope for link address sorting.
[TCP] tcp_highspeed: Fix AI updates.
[MAINTAINERS]: Add proper entry for TC classifier
[NETROM]: Drop lock before calling nr_destroy_socket
[NETROM]: Fix locking order when establishing a NETROM circuit.
[AX.25]: Fix locking of ax25 protocol function list.
[IPV6]: order addresses by scope
Diffstat (limited to 'net/ipv4/tcp_highspeed.c')
-rw-r--r-- | net/ipv4/tcp_highspeed.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/net/ipv4/tcp_highspeed.c b/net/ipv4/tcp_highspeed.c index aaa1538c0692..fa3e1aad660c 100644 --- a/net/ipv4/tcp_highspeed.c +++ b/net/ipv4/tcp_highspeed.c | |||
@@ -139,14 +139,19 @@ static void hstcp_cong_avoid(struct sock *sk, u32 adk, u32 rtt, | |||
139 | tp->snd_cwnd++; | 139 | tp->snd_cwnd++; |
140 | } | 140 | } |
141 | } else { | 141 | } else { |
142 | /* Update AIMD parameters */ | 142 | /* Update AIMD parameters. |
143 | * | ||
144 | * We want to guarantee that: | ||
145 | * hstcp_aimd_vals[ca->ai-1].cwnd < | ||
146 | * snd_cwnd <= | ||
147 | * hstcp_aimd_vals[ca->ai].cwnd | ||
148 | */ | ||
143 | if (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd) { | 149 | if (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd) { |
144 | while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd && | 150 | while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd && |
145 | ca->ai < HSTCP_AIMD_MAX - 1) | 151 | ca->ai < HSTCP_AIMD_MAX - 1) |
146 | ca->ai++; | 152 | ca->ai++; |
147 | } else if (tp->snd_cwnd < hstcp_aimd_vals[ca->ai].cwnd) { | 153 | } else if (ca->ai && tp->snd_cwnd <= hstcp_aimd_vals[ca->ai-1].cwnd) { |
148 | while (tp->snd_cwnd > hstcp_aimd_vals[ca->ai].cwnd && | 154 | while (ca->ai && tp->snd_cwnd <= hstcp_aimd_vals[ca->ai-1].cwnd) |
149 | ca->ai > 0) | ||
150 | ca->ai--; | 155 | ca->ai--; |
151 | } | 156 | } |
152 | 157 | ||