From: Wei Yongjun <yjwei@cn.fujitsu.com>
To: linux-sctp@vger.kernel.org
Subject: [PATCH] SCTP: Fix DATA retransmit after fast retransmit
Date: Fri, 18 Apr 2008 07:56:49 +0000 [thread overview]
Message-ID: <48085441.2030904@cn.fujitsu.com> (raw)
If DATA chunk is resend by fast retransmit, and no SACK is received,
this DATA chunk can not be send again after T3 timeout.
This is because chunk->sent_at will be update after chunk is
transmitted, but after fast retransmit, T3 timer will not be reset, so
sctp_retransmit_mark() can not mark this chunk for retransmit, and will
never sent again because not T3 timer is running.
You can test this by following data transmit:
Endpoint A Endpoint B
<-------------- DATA1
<-------------- DATA2
<-------------- DATA3
<-------------- DATA4
<-------------- DATA5
SACK(1,2) --------------->
SACK(1,3) --------------->
SACK(1,3,4) --------------->
SACK(1,3,4,5)--------------->
<-------------- DATA2 (Fast retransmit)
NO SACK is sent, DATA2 will never be send again.
Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
--- a/net/sctp/outqueue.c 2008-04-18 09:00:58.000000000 -0400
+++ b/net/sctp/outqueue.c 2008-04-18 09:06:07.000000000 -0400
@@ -425,7 +425,8 @@ void sctp_retransmit_mark(struct sctp_ou
* retransmitting due to T3 timeout.
*/
if (reason = SCTP_RTXR_T3_RTX &&
- (jiffies - chunk->sent_at) < transport->last_rto)
+ (jiffies - chunk->sent_at) < transport->last_rto &&
+ !chunk->fast_retransmit)
continue;
/* RFC 2960 6.2.1 Processing a Received SACK
next reply other threads:[~2008-04-18 7:56 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-04-18 7:56 Wei Yongjun [this message]
2008-04-18 19:41 ` [PATCH] SCTP: Fix DATA retransmit after fast retransmit Vlad Yasevich
2008-04-19 5:45 ` Wei Yongjun
2008-04-21 14:37 ` Vlad Yasevich
2008-04-22 4:29 ` Wei Yongjun
2008-04-23 19:53 ` Vlad Yasevich
2008-04-25 4:04 ` Wei Yongjun
2008-04-25 17:56 ` Vlad Yasevich
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=48085441.2030904@cn.fujitsu.com \
--to=yjwei@cn.fujitsu.com \
--cc=linux-sctp@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.