aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/ipv4/tcp_westwood.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/net/ipv4/tcp_westwood.c b/net/ipv4/tcp_westwood.c
index 62a96b71b0dd..12a2cd976e3a 100644
--- a/net/ipv4/tcp_westwood.c
+++ b/net/ipv4/tcp_westwood.c
@@ -1,7 +1,24 @@
1/* 1/*
2 * TCP Westwood+ 2 * TCP Westwood+: end-to-end bandwidth estimation for TCP
3 * 3 *
4 * Angelo Dell'Aera: TCP Westwood+ support 4 * Angelo Dell'Aera: author of the first version of TCP Westwood+ in Linux 2.4
5 *
6 * Support at http://c3lab.poliba.it/index.php/Westwood
7 * Main references in literature:
8 *
9 * - Mascolo S, Casetti, M. Gerla et al.
10 * "TCP Westwood: bandwidth estimation for TCP" Proc. ACM Mobicom 2001
11 *
12 * - A. Grieco, s. Mascolo
13 * "Performance evaluation of New Reno, Vegas, Westwood+ TCP" ACM Computer
14 * Comm. Review, 2004
15 *
16 * - A. Dell'Aera, L. Grieco, S. Mascolo.
17 * "Linux 2.4 Implementation of Westwood+ TCP with Rate-Halving :
18 * A Performance Evaluation Over the Internet" (ICC 2004), Paris, June 2004
19 *
20 * Westwood+ employs end-to-end bandwidth measurement to set cwnd and
21 * ssthresh after packet loss. The probing phase is as the original Reno.
5 */ 22 */
6 23
7#include <linux/config.h> 24#include <linux/config.h>
@@ -93,7 +110,7 @@ static void westwood_update_window(struct sock *sk)
93 struct westwood *w = inet_csk_ca(sk); 110 struct westwood *w = inet_csk_ca(sk);
94 s32 delta = tcp_time_stamp - w->rtt_win_sx; 111 s32 delta = tcp_time_stamp - w->rtt_win_sx;
95 112
96 /* Initialise w->snd_una with the first acked sequence number in order 113 /* Initialize w->snd_una with the first acked sequence number in order
97 * to fix mismatch between tp->snd_una and w->snd_una for the first 114 * to fix mismatch between tp->snd_una and w->snd_una for the first
98 * bandwidth sample 115 * bandwidth sample
99 */ 116 */
@@ -191,7 +208,7 @@ static void tcp_westwood_event(struct sock *sk, enum tcp_ca_event event)
191{ 208{
192 struct tcp_sock *tp = tcp_sk(sk); 209 struct tcp_sock *tp = tcp_sk(sk);
193 struct westwood *w = inet_csk_ca(sk); 210 struct westwood *w = inet_csk_ca(sk);
194 211
195 switch(event) { 212 switch(event) {
196 case CA_EVENT_FAST_ACK: 213 case CA_EVENT_FAST_ACK:
197 westwood_fast_bw(sk); 214 westwood_fast_bw(sk);