From 7d8cb3a68a8dac6fc5fb5c2eaaf56f257803a37f Mon Sep 17 00:00:00 2001 From: Luca De Cicco Date: Sun, 11 Jun 2006 23:01:59 -0700 Subject: [PATCH] --- yaml --- r: 27573 b: refs/heads/master c: b3a92eabe5b67bd207a38ae13dd51f4e08c1f6f7 h: refs/heads/master i: 27571: 3da5017f333a977a26f5020455a93d26e777f329 v: v3 --- [refs] | 2 +- trunk/net/ipv4/tcp_westwood.c | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index ad48116eafe8..4204a05a1522 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: b7d7a9e3c900f0733bf2aabdd41e6dbc70eae94b +refs/heads/master: b3a92eabe5b67bd207a38ae13dd51f4e08c1f6f7 diff --git a/trunk/net/ipv4/tcp_westwood.c b/trunk/net/ipv4/tcp_westwood.c index 12a2cd976e3a..edf2ee19a8ba 100644 --- a/trunk/net/ipv4/tcp_westwood.c +++ b/trunk/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); + } } /*