diff options
| author | Luca De Cicco <ldecicco@gmail.com> | 2006-06-11 23:01:59 -0700 | 
|---|---|---|
| committer | David S. Miller <davem@sunset.davemloft.net> | 2006-06-17 21:30:36 -0700 | 
| commit | b3a92eabe5b67bd207a38ae13dd51f4e08c1f6f7 (patch) | |
| tree | 511472b1fb5e71e810dd73c9d8b11c12d9aa0efe /net | |
| parent | b7d7a9e3c900f0733bf2aabdd41e6dbc70eae94b (diff) | |
| download | kernel_samsung_tuna-b3a92eabe5b67bd207a38ae13dd51f4e08c1f6f7.zip kernel_samsung_tuna-b3a92eabe5b67bd207a38ae13dd51f4e08c1f6f7.tar.gz kernel_samsung_tuna-b3a92eabe5b67bd207a38ae13dd51f4e08c1f6f7.tar.bz2  | |
[TCP] Westwood: bandwidth filter startup
The bandwidth estimate filter is now initialized with the first
sample in order to have better performances in the case of small
file transfers.
Signed-off-by: Luca De Cicco <ldecicco@gmail.com>
Signed-off-by: Stephen Hemminger <shemminger@dxpl.pdx.osdl.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
| -rw-r--r-- | net/ipv4/tcp_westwood.c | 12 | 
1 files changed, 9 insertions, 3 deletions
diff --git a/net/ipv4/tcp_westwood.c b/net/ipv4/tcp_westwood.c index 12a2cd9..edf2ee1 100644 --- a/net/ipv4/tcp_westwood.c +++ b/net/ipv4/tcp_westwood.c @@ -82,10 +82,16 @@ static inline u32 westwood_do_filter(u32 a, u32 b)  	return (((7 * a) + b) >> 3);  } -static inline void westwood_filter(struct westwood *w, u32 delta) +static void westwood_filter(struct westwood *w, u32 delta)  { -	w->bw_ns_est = westwood_do_filter(w->bw_ns_est, w->bk / delta); -	w->bw_est = westwood_do_filter(w->bw_est, w->bw_ns_est); +	/* If the filter is empty fill it with the first sample of bandwidth  */ +	if (w->bw_ns_est == 0 && w->bw_est == 0) { +		w->bw_ns_est = w->bk / delta; +		w->bw_est = w->bw_ns_est; +	} else { +		w->bw_ns_est = westwood_do_filter(w->bw_ns_est, w->bk / delta); +		w->bw_est = westwood_do_filter(w->bw_est, w->bw_ns_est); +	}  }  /*  | 
