SCTP: Do not retransmit chunks that are newer then rtt.
authorVlad Yasevich <vladislav.yasevich@hp.com>
Fri, 24 Aug 2007 10:37:46 +0000 (19:37 +0900)
committerVlad Yasevich <vladislav.yasevich@hp.com>
Thu, 30 Aug 2007 17:56:06 +0000 (13:56 -0400)
When performing a retransmit, do not include the chunk if
it was sent less then 1 rtt ago.  The reason is that we
may receive the SACK very soon and wouldn't retransmit.
Suggested by Randy Stewart.

Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
net/sctp/outqueue.c

index 992f361084b741115f3e14006bb00bb0772a4fcf..28f4fe77ceee2e44e9b2e29eefd2be632464c331 100644 (file)
@@ -421,6 +421,13 @@ void sctp_retransmit_mark(struct sctp_outq *q,
                 */
                if ((fast_retransmit && (chunk->fast_retransmit > 0)) ||
                   (!fast_retransmit && !chunk->tsn_gap_acked)) {
+                       /* If this chunk was sent less then 1 rto ago, do not
+                        * retransmit this chunk, but give the peer time
+                        * to acknowlege it.
+                        */
+                       if ((jiffies - chunk->sent_at) < transport->rto)
+                               continue;
+
                        /* RFC 2960 6.2.1 Processing a Received SACK
                         *
                         * C) Any time a DATA chunk is marked for