Netdev List
 help / color / mirror / Atom feed
From: TAKANO Ryousei <takano@axe-inc.co.jp>
To: ilpo.jarvinen@helsinki.fi
Cc: davem@davemloft.net, y-kodama@aist.go.jp, netdev@vger.kernel.org
Subject: Re: [PATCH] [TCP]: Remove lost_retrans zero special cases
Date: Thu, 18 Oct 2007 19:55:58 +0900 (JST)	[thread overview]
Message-ID: <20071018.195558.103454352.takano@axe-inc.co.jp> (raw)
In-Reply-To: <Pine.LNX.4.64.0710181314130.3767@kivilampi-30.cs.helsinki.fi>

From: "Ilpo Järvinen" <ilpo.jarvinen@helsinki.fi>
Subject: [PATCH] [TCP]: Remove lost_retrans zero special cases
Date: Thu, 18 Oct 2007 13:17:24 +0300 (EEST)

> [PATCH] [TCP]: Remove lost_retrans zero seqno special cases
> 
> Both high-sack detection and new lowest seq variables have
> unnecessary zero special case which are now removed by setting
> safe initial seqnos.
> 
> This also fixes problem which caused zero received_upto being
> passed to tcp_mark_lost_retrans which confused after relations
> within the marker loop causing incorrect TCPCB_SACKED_RETRANS
> clearing. The problem was noticed because of a performance
> report from TAKANO Ryousei <takano@axe-inc.co.jp>.
> 
> Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
> ---
>  net/ipv4/tcp_input.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
> index 0f00966..9288220 100644
> --- a/net/ipv4/tcp_input.c
> +++ b/net/ipv4/tcp_input.c
> @@ -1121,7 +1121,7 @@ static int tcp_mark_lost_retrans(struct sock *sk, u32 received_upto)
>  	struct sk_buff *skb;
>  	int flag = 0;
>  	int cnt = 0;
> -	u32 new_low_seq = 0;
> +	u32 new_low_seq = tp->snd_nxt;
>  
>  	tcp_for_write_queue(skb, sk) {
>  		u32 ack_seq = TCP_SKB_CB(skb)->ack_seq;
> @@ -1153,7 +1153,7 @@ static int tcp_mark_lost_retrans(struct sock *sk, u32 received_upto)
>  				NET_INC_STATS_BH(LINUX_MIB_TCPLOSTRETRANSMIT);
>  			}
>  		} else {
> -			if (!new_low_seq || before(ack_seq, new_low_seq))
> +			if (before(ack_seq, new_low_seq))
>  				new_low_seq = ack_seq;
>  			cnt += tcp_skb_pcount(skb);
>  		}
> @@ -1242,7 +1242,7 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_
>  	int num_sacks = (ptr[1] - TCPOLEN_SACK_BASE)>>3;
>  	int reord = tp->packets_out;
>  	int prior_fackets;
> -	u32 highest_sack_end_seq = 0;
> +	u32 highest_sack_end_seq = tp->lost_retrans_low;
>  	int flag = 0;
>  	int found_dup_sack = 0;
>  	int cached_fack_count;
> -- 
> 1.5.0.6

Thanks Ilpo! This patch solves the problem, as shown below:

iteration :001 .... done. T = 17.365902 BW = 460.672876 Mbps
iteration :002 .... done. T = 16.456351 BW = 486.134501 Mbps
iteration :003 .... done. T = 16.658353 BW = 480.239550 Mbps
iteration :004 .... done. T = 16.468834 BW = 485.766026 Mbps
iteration :005 .... done. T = 16.596055 BW = 482.042268 Mbps

Acked-by: Ryousei Takano <takano-ryousei@aist.go.jp>

  reply	other threads:[~2007-10-18 10:56 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-10-11 11:41 [PATCH net-2.6 0/7] TCP: small changes/fixes + lost_retrans brokeness fix Ilpo Järvinen
2007-10-11 11:41 ` [PATCH 1/7] [TCP]: Add bytes_acked (ABC) clearing to FRTO too Ilpo Järvinen
2007-10-11 11:41   ` [PATCH 2/7] [TCP]: Fix mark_head_lost to ignore R-bit when trying to mark L Ilpo Järvinen
2007-10-11 11:41     ` [PATCH 3/7] [TCP]: Kill almost unused variable pcount from sacktag Ilpo Järvinen
2007-10-11 11:41       ` [PATCH 4/7] [TCP]: Extract tcp_match_queue_to_sack from sacktag code Ilpo Järvinen
2007-10-11 11:41         ` [PATCH 5/7] [TCP]: No need to re-count fackets_out/sacked_out at RTO Ilpo Järvinen
2007-10-11 11:41           ` [PATCH 6/7] [TCP]: Fix lost_retrans loop vs fastpath problems Ilpo Järvinen
2007-10-11 11:41             ` [PATCH 7/7] [TCP]: Limit processing lost_retrans loop to work-to-do cases Ilpo Järvinen
2007-10-12  0:36               ` David Miller
2007-10-18  3:50                 ` TAKANO Ryousei
2007-10-18  9:40                   ` [PATCH] [TCP]: Add highest_sack_end_seq check back to lost_retrans call Ilpo Järvinen
2007-10-18 10:17                     ` [PATCH] [TCP]: Remove lost_retrans zero special cases Ilpo Järvinen
2007-10-18 10:55                       ` TAKANO Ryousei [this message]
2007-10-18 11:07                         ` Ilpo Järvinen
2007-10-18 12:08                           ` David Miller
2007-10-12  0:35             ` [PATCH 6/7] [TCP]: Fix lost_retrans loop vs fastpath problems David Miller
2007-10-12  0:35           ` [PATCH 5/7] [TCP]: No need to re-count fackets_out/sacked_out at RTO David Miller
2007-10-12  0:34         ` [PATCH 4/7] [TCP]: Extract tcp_match_queue_to_sack from sacktag code David Miller
2007-10-12  0:34       ` [PATCH 3/7] [TCP]: Kill almost unused variable pcount from sacktag David Miller
2007-10-12  0:33     ` [PATCH 2/7] [TCP]: Fix mark_head_lost to ignore R-bit when trying to mark L David Miller
2007-10-12  0:32   ` [PATCH 1/7] [TCP]: Add bytes_acked (ABC) clearing to FRTO too David Miller
2007-10-12  0:37 ` [PATCH net-2.6 0/7] TCP: small changes/fixes + lost_retrans brokeness fix David 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=20071018.195558.103454352.takano@axe-inc.co.jp \
    --to=takano@axe-inc.co.jp \
    --cc=davem@davemloft.net \
    --cc=ilpo.jarvinen@helsinki.fi \
    --cc=netdev@vger.kernel.org \
    --cc=y-kodama@aist.go.jp \
    /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