From patchwork Sat Sep 20 21:47:52 2008 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?q?Ilpo_J=C3=A4rvinen?= X-Patchwork-Id: 754 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.176.167]) by ozlabs.org (Postfix) with ESMTP id 32CFDDDE24 for ; Sun, 21 Sep 2008 07:50:08 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751652AbYITVsz (ORCPT ); Sat, 20 Sep 2008 17:48:55 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1753034AbYITVsw (ORCPT ); Sat, 20 Sep 2008 17:48:52 -0400 Received: from courier.cs.helsinki.fi ([128.214.9.1]:56256 "EHLO mail.cs.helsinki.fi" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751758AbYITVsG (ORCPT ); Sat, 20 Sep 2008 17:48:06 -0400 Received: from wrl-59.cs.helsinki.fi (wrl-59.cs.helsinki.fi [128.214.166.179]) (AUTH: PLAIN cs-relay, TLS: TLSv1/SSLv3,256bits,AES256-SHA) by mail.cs.helsinki.fi with esmtp; Sun, 21 Sep 2008 00:47:59 +0300 id 0005BEEA.48D56F8F.0000531E Received: by wrl-59.cs.helsinki.fi (Postfix, from userid 50795) id D716EA00A9; Sun, 21 Sep 2008 00:47:58 +0300 (EEST) From: "=?ISO-8859-1?Q?Ilpo_J=E4rvinen?=" To: David Miller Cc: netdev@vger.kernel.org, "=?utf-8?q?Ilpo=20J=E4rvinen?=" Subject: [PATCHv2 net-next 09/15] tcp: Reorganize skb tagbit checks Date: Sun, 21 Sep 2008 00:47:52 +0300 Message-Id: <1221947278-16715-10-git-send-email-ilpo.jarvinen@helsinki.fi> X-Mailer: git-send-email 1.5.4.2.156.ge3c5 In-Reply-To: <1221947278-16715-9-git-send-email-ilpo.jarvinen@helsinki.fi> References: <1221947278-16715-1-git-send-email-ilpo.jarvinen@helsinki.fi> <1221947278-16715-2-git-send-email-ilpo.jarvinen@helsinki.fi> <1221947278-16715-3-git-send-email-ilpo.jarvinen@helsinki.fi> <1221947278-16715-4-git-send-email-ilpo.jarvinen@helsinki.fi> <1221947278-16715-5-git-send-email-ilpo.jarvinen@helsinki.fi> <1221947278-16715-6-git-send-email-ilpo.jarvinen@helsinki.fi> <1221947278-16715-7-git-send-email-ilpo.jarvinen@helsinki.fi> <1221947278-16715-8-git-send-email-ilpo.jarvinen@helsinki.fi> <1221947278-16715-9-git-send-email-ilpo.jarvinen@helsinki.fi> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Signed-off-by: Ilpo Järvinen --- net/ipv4/tcp_output.c | 38 +++++++++++++++++++------------------- 1 files changed, 19 insertions(+), 19 deletions(-) diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index f4d6228..efe3c58 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c @@ -2030,6 +2030,7 @@ void tcp_xmit_retransmit_queue(struct sock *sk) const struct inet_connection_sock *icsk = inet_csk(sk); struct tcp_sock *tp = tcp_sk(sk); struct sk_buff *skb; + int mib_idx; if (tp->retransmit_skb_hint) skb = tp->retransmit_skb_hint; @@ -2057,27 +2058,26 @@ void tcp_xmit_retransmit_queue(struct sock *sk) return; if (!before(TCP_SKB_CB(skb)->seq, tp->retransmit_high)) break; + if (sacked & (TCPCB_SACKED_ACKED|TCPCB_SACKED_RETRANS)) + continue; - if (sacked & TCPCB_LOST) { - if (!(sacked & (TCPCB_SACKED_ACKED|TCPCB_SACKED_RETRANS))) { - int mib_idx; - - if (tcp_retransmit_skb(sk, skb)) { - tp->retransmit_skb_hint = NULL; - return; - } - if (icsk->icsk_ca_state != TCP_CA_Loss) - mib_idx = LINUX_MIB_TCPFASTRETRANS; - else - mib_idx = LINUX_MIB_TCPSLOWSTARTRETRANS; - NET_INC_STATS_BH(sock_net(sk), mib_idx); - - if (skb == tcp_write_queue_head(sk)) - inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS, - inet_csk(sk)->icsk_rto, - TCP_RTO_MAX); - } + if (!(sacked & TCPCB_LOST)) + continue; + + if (tcp_retransmit_skb(sk, skb)) { + tp->retransmit_skb_hint = NULL; + return; } + if (icsk->icsk_ca_state != TCP_CA_Loss) + mib_idx = LINUX_MIB_TCPFASTRETRANS; + else + mib_idx = LINUX_MIB_TCPSLOWSTARTRETRANS; + NET_INC_STATS_BH(sock_net(sk), mib_idx); + + if (skb == tcp_write_queue_head(sk)) + inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS, + inet_csk(sk)->icsk_rto, + TCP_RTO_MAX); } }