From patchwork Thu Mar 3 09:29:39 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wei Yongjun X-Patchwork-Id: 85248 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.180.67]) by ozlabs.org (Postfix) with ESMTP id AF287B70B8 for ; Thu, 3 Mar 2011 20:29:35 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754794Ab1CCJ33 (ORCPT ); Thu, 3 Mar 2011 04:29:29 -0500 Received: from cn.fujitsu.com ([222.73.24.84]:50412 "EHLO song.cn.fujitsu.com" rhost-flags-OK-FAIL-OK-OK) by vger.kernel.org with ESMTP id S1751945Ab1CCJ31 (ORCPT ); Thu, 3 Mar 2011 04:29:27 -0500 Received: from tang.cn.fujitsu.com (tang.cn.fujitsu.com [10.167.250.3]) by song.cn.fujitsu.com (Postfix) with ESMTP id 319EC170135; Thu, 3 Mar 2011 17:29:26 +0800 (CST) Received: from mailserver.fnst.cn.fujitus.com (tang.cn.fujitsu.com [127.0.0.1]) by tang.cn.fujitsu.com (8.14.3/8.13.1) with ESMTP id p239NZgE021889; Thu, 3 Mar 2011 17:23:35 +0800 Received: from [10.167.225.36] ([10.167.225.36]) by mailserver.fnst.cn.fujitus.com (Lotus Domino Release 8.5.1FP4) with ESMTP id 2011030317281732-273462 ; Thu, 3 Mar 2011 17:28:17 +0800 Message-ID: <4D6F5F83.705@cn.fujitsu.com> Date: Thu, 03 Mar 2011 17:29:39 +0800 From: Wei Yongjun User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.13) Gecko/20101208 Thunderbird/3.1.7 MIME-Version: 1.0 To: David Miller , Vlad Yasevich , "netdev@vger.kernel.org" , lksctp CC: Mingyuan Zhu , Neil Horman Subject: [PATCH] sctp: fix the fast retransmit limit X-MIMETrack: Itemize by SMTP Server on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-03-03 17:28:17, Serialize by Router on mailserver/fnst(Release 8.5.1FP4|July 25, 2010) at 2011-03-03 17:28:17, Serialize complete at 2011-03-03 17:28:17 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org If chunk is still lost after fast retransmit, SCTP stack will never allow the second fast retransmit of this chunk, even if the peer need we do this. This chunk will be retransmit until the rtx timeout. This limit is introduce by the following patch: sctp: reduce memory footprint of sctp_chunk structure (c226ef9b83694311327f3ab0036c6de9c22e9daf) This patch revert this limit and removed useless SCTP_DONT_FRTX. Signed-off-by: Wei Yongjun Acked-by: Neil Horman --- include/net/sctp/structs.h | 1 - net/sctp/outqueue.c | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/include/net/sctp/structs.h b/include/net/sctp/structs.h index cc9185c..82a0f84 100644 --- a/include/net/sctp/structs.h +++ b/include/net/sctp/structs.h @@ -751,7 +751,6 @@ struct sctp_chunk { #define SCTP_CAN_FRTX 0x0 #define SCTP_NEED_FRTX 0x1 -#define SCTP_DONT_FRTX 0x2 __u16 rtt_in_progress:1, /* This chunk used for RTT calc? */ has_tsn:1, /* Does this chunk have a TSN yet? */ has_ssn:1, /* Does this chunk have a SSN yet? */ diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index 8c6d379..7ed5862 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c @@ -657,7 +657,7 @@ redo: * after it is retransmitted. */ if (chunk->fast_retransmit == SCTP_NEED_FRTX) - chunk->fast_retransmit = SCTP_DONT_FRTX; + chunk->fast_retransmit = SCTP_CAN_FRTX; q->empty = 0; break; @@ -679,7 +679,7 @@ redo: if (rtx_timeout || fast_rtx) { list_for_each_entry(chunk1, lqueue, transmitted_list) { if (chunk1->fast_retransmit == SCTP_NEED_FRTX) - chunk1->fast_retransmit = SCTP_DONT_FRTX; + chunk1->fast_retransmit = SCTP_CAN_FRTX; } }