diff options
author | Vlad Yasevich <vladislav.yasevich@hp.com> | 2008-06-04 12:39:11 -0700 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-06-04 12:39:11 -0700 |
commit | 62aeaff5ccd96462b7077046357a6d7886175a57 (patch) | |
tree | 8ea18997997a8724222c86f659b559e12bcf4a86 /net/sctp/transport.c | |
parent | a6465234814efda9ed1dccdba852953f7508e827 (diff) | |
download | linux-62aeaff5ccd96462b7077046357a6d7886175a57.tar.gz linux-62aeaff5ccd96462b7077046357a6d7886175a57.tar.bz2 linux-62aeaff5ccd96462b7077046357a6d7886175a57.zip |
sctp: Start T3-RTX timer when fast retransmitting lowest TSN
When we are trying to fast retransmit the lowest outstanding TSN, we
need to restart the T3-RTX timer, so that subsequent timeouts will
correctly tag all the packets necessary for retransmissions.
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Tested-by: Wei Yongjun <yjwei@cn.fujitsu.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/transport.c')
-rw-r--r-- | net/sctp/transport.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/sctp/transport.c b/net/sctp/transport.c index 9647fb277221..3f34f61221ec 100644 --- a/net/sctp/transport.c +++ b/net/sctp/transport.c @@ -191,7 +191,7 @@ static void sctp_transport_destroy(struct sctp_transport *transport) /* Start T3_rtx timer if it is not already running and update the heartbeat * timer. This routine is called every time a DATA chunk is sent. */ -void sctp_transport_reset_timers(struct sctp_transport *transport) +void sctp_transport_reset_timers(struct sctp_transport *transport, int force) { /* RFC 2960 6.3.2 Retransmission Timer Rules * @@ -201,7 +201,7 @@ void sctp_transport_reset_timers(struct sctp_transport *transport) * address. */ - if (!timer_pending(&transport->T3_rtx_timer)) + if (force || !timer_pending(&transport->T3_rtx_timer)) if (!mod_timer(&transport->T3_rtx_timer, jiffies + transport->rto)) sctp_transport_hold(transport); |