summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGui Jianfeng <guijianfeng@cn.fujitsu.com>2008-04-17 23:22:18 +0200
committerDavid S. Miller <davem@davemloft.net>2008-04-17 23:22:18 +0200
commit8b73a07c8ffaa70683022566080f4df3328ea18d (patch)
tree2892c383511fc73fe31e1dc93d1f6dcf8f316737
parentMerge branch 'upstream-net26' of master.kernel.org:/pub/scm/linux/kernel/git/... (diff)
downloadlinux-8b73a07c8ffaa70683022566080f4df3328ea18d.tar.xz
linux-8b73a07c8ffaa70683022566080f4df3328ea18d.zip
SCTP: Initialize partial_bytes_acked to 0, when all of the data is acked.
According to RFC4960 7.2.2, When all of the data transmitted by the sender has been acknowledged by the recerver, partial_bytes_acked is initialized to 0. This patch conforms to rfc requirement. Without this fix, cwnd might be error incremented. Signed-off-by: Gui Jianfeng <guijianfeng@cn.fujitsu.com> Acked-by: Vlad Yasevich <vladislav.yasevich@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--net/sctp/outqueue.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c
index a7ba9e146dff..59edfd25a19c 100644
--- a/net/sctp/outqueue.c
+++ b/net/sctp/outqueue.c
@@ -1532,6 +1532,8 @@ static void sctp_check_transmitted(struct sctp_outq *q,
bytes_acked);
transport->flight_size -= bytes_acked;
+ if (transport->flight_size == 0)
+ transport->partial_bytes_acked = 0;
q->outstanding_bytes -= bytes_acked;
} else {
/* RFC 2960 6.1, sctpimpguide-06 2.15.2