From: Wei Yongjun <yjwei@cn.fujitsu.com>
Date: Sat, 1 May 2010 01:42:43 +0000 (-0400)
Subject: sctp: assure at least one T3-rtx timer is running if a FORWARD TSN is sent
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=bd69b981a354be40cc709f3046f0c56f00da6163;p=openwrt%2Fstaging%2Fblogic.git

sctp: assure at least one T3-rtx timer is running if a FORWARD TSN is sent

PR-SCTP extension section 3.5 Sender Side Implementation of PR-SCTP:
  C5) If a FORWARD TSN is sent, the sender MUST assure that at
      least one T3-rtx timer is running.

So this patch fix to assure at least one T3-rtx timer is running
if a FORWARD TSN is or will to sent.

Signed-off-by: Wei Yongjun <yjwei@cn.fujitsu.com>
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
---

diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c
index abfc0b8dee74..16d451a62b3f 100644
--- a/net/sctp/outqueue.c
+++ b/net/sctp/outqueue.c
@@ -854,6 +854,12 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout)
 			if (status  != SCTP_XMIT_OK) {
 				/* put the chunk back */
 				list_add(&chunk->list, &q->control_chunk_list);
+			} else if (chunk->chunk_hdr->type == SCTP_CID_FWD_TSN) {
+				/* PR-SCTP C5) If a FORWARD TSN is sent, the
+				 * sender MUST assure that at least one T3-rtx
+				 * timer is running.
+				 */
+				sctp_transport_reset_timers(transport, 0);
 			}
 			break;