Netdev List
 help / color / mirror / Atom feed
From: "Angelo P. Castellani" <angelo.castellani+lkml@gmail.com>
To: netdev <netdev@vger.kernel.org>
Cc: francesco@net.infocom.uniroma1.it, andrea.baiocchi@uniroma1.it
Subject: [PATCH] reno sacked_out count fix
Date: Tue, 16 May 2006 11:24:00 +0200	[thread overview]
Message-ID: <8dd26e70605160224i44bbaa8ei93eede75e71f6665@mail.gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 611 bytes --]

Using NewReno, if a sk_buff is timed out and is accounted as lost_out,
it should also be removed from the sacked_out.

This is necessary because recovery using NewReno fast retransmit could
take up to a lot RTTs and the sk_buff RTO can expire without actually
being really lost.

left_out = sacked_out + lost_out
in_flight = packets_out - left_out + retrans_out

Using NewReno without this patch, on very large network losses,
left_out becames bigger than packets_out + retrans_out (!!).

For this reason unsigned integer in_flight overflows to 2^32 - something.

Regards,
Angelo P. Castellani

[-- Attachment #2: reno-fix.diff --]
[-- Type: text/x-patch, Size: 548 bytes --]

diff -urd ../linux-2.6.16-orig/net/ipv4/tcp_input.c ./net/ipv4/tcp_input.c
--- ../linux-2.6.16-orig/net/ipv4/tcp_input.c	2006-05-15 15:42:39.000000000 +0200
+++ ./net/ipv4/tcp_input.c	2006-05-16 11:18:21.000000000 +0200
@@ -1676,6 +1676,8 @@
 			if (!(TCP_SKB_CB(skb)->sacked&TCPCB_TAGBITS)) {
 				TCP_SKB_CB(skb)->sacked |= TCPCB_LOST;
 				tp->lost_out += tcp_skb_pcount(skb);
+				if (IsReno(tp)) 
+					tcp_remove_reno_sacks(sk, tp, tcp_skb_pcount(skb) + 1);
 
 				/* clear xmit_retrans hint */
 				if (tp->retransmit_skb_hint &&












             reply	other threads:[~2006-05-16  9:24 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-05-16  9:24 Angelo P. Castellani [this message]
2006-05-17  4:40 ` [PATCH] reno sacked_out count fix David S. Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8dd26e70605160224i44bbaa8ei93eede75e71f6665@mail.gmail.com \
    --to=angelo.castellani+lkml@gmail.com \
    --cc=andrea.baiocchi@uniroma1.it \
    --cc=francesco@net.infocom.uniroma1.it \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox