From patchwork Wed Jan 7 09:25:16 2009 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arnd Hannemann X-Patchwork-Id: 17076 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 0EE37DE54C for ; Wed, 7 Jan 2009 20:55:35 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752547AbZAGJz2 (ORCPT ); Wed, 7 Jan 2009 04:55:28 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1751431AbZAGJz2 (ORCPT ); Wed, 7 Jan 2009 04:55:28 -0500 Received: from mta-2.ms.rz.RWTH-Aachen.DE ([134.130.7.73]:64214 "EHLO mta-2.ms.rz.rwth-aachen.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751938AbZAGJz0 (ORCPT ); Wed, 7 Jan 2009 04:55:26 -0500 X-Greylist: delayed 1802 seconds by postgrey-1.27 at vger.kernel.org; Wed, 07 Jan 2009 04:55:26 EST MIME-version: 1.0 Content-transfer-encoding: 7BIT Content-type: TEXT/PLAIN; format=flowed; charset=US-ASCII Received: from ironport-out-1.rz.rwth-aachen.de ([134.130.5.40]) by mta-2.ms.rz.RWTH-Aachen.de (Sun Java(tm) System Messaging Server 6.3-7.04 (built Sep 26 2008)) with ESMTP id <0KD3005R2GUA8IF0@mta-2.ms.rz.RWTH-Aachen.de>; Wed, 07 Jan 2009 10:25:22 +0100 (CET) X-IronPort-AV: E=Sophos; i="4.37,225,1231110000"; d="scan'208"; a="95692748" Received: from relay-1.ms.rz.rwth-aachen.de (HELO relay.rwth-aachen.de) ([134.130.7.74]) by ironport-in-1.rz.rwth-aachen.de with ESMTP; Wed, 07 Jan 2009 10:25:22 +0100 Received: from rhea.local (informatik-4-137-226-12-102.nn.RWTH-Aachen.DE [137.226.12.102] (may be forged)) by relay.rwth-aachen.de (8.13.8+Sun/8.13.8/1) with ESMTP id n079PMIC016994; Wed, 07 Jan 2009 10:25:22 +0100 (CET) Date: Wed, 07 Jan 2009 10:25:16 +0100 (CET) From: Arnd Hannemann X-X-Sender: arnd@rhea To: linux-kernel@vger.kernel.org Cc: netdev@vger.kernel.org Subject: [PATCH][TCP]: simplify tcp_mark_lost_retrans() Message-id: User-Agent: Alpine 2.00 (DEB 1167 2008-08-23) Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Hi, I noticed that in tcp_mark_lost_retrans the for-loop is only entered if tcp_is_fack(tp) evaluates to true: if (!tcp_is_fack(tp) || !tp->retrans_out || !after(received_upto, tp->lost_retrans_low) || icsk->icsk_ca_state != TCP_CA_Recovery) return; Therefore the following check in the for-loop seems to be redundant, because it always evaluates to true: (tcp_is_fack(tp) || !before(received_upto, ack_seq + tp->reordering * tp->mss_cache)) Did I miss something? Best regards, Arnd Hannemann From: Arnd Hannemann Because the for loop is only executed for FACK-enabled flows remove redundant checks within the loop. Signed-off-by: Arnd Hannemann --- -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 99b7ecb..cd8b4bd 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c @@ -1178,10 +1178,7 @@ static void tcp_mark_lost_retrans(struct sock *sk) if (!(TCP_SKB_CB(skb)->sacked & TCPCB_SACKED_RETRANS)) continue; - if (after(received_upto, ack_seq) && - (tcp_is_fack(tp) || - !before(received_upto, - ack_seq + tp->reordering * tp->mss_cache))) { + if (after(received_upto, ack_seq)) { TCP_SKB_CB(skb)->sacked &= ~TCPCB_SACKED_RETRANS; tp->retrans_out -= tcp_skb_pcount(skb);