diff options
author | Vlad Yasevich <vladislav.yasevich@hp.com> | 2008-06-04 15:39:11 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-06-04 15:39:11 -0400 |
commit | 62aeaff5ccd96462b7077046357a6d7886175a57 (patch) | |
tree | 8ea18997997a8724222c86f659b559e12bcf4a86 /net/sctp/transport.c | |
parent | a6465234814efda9ed1dccdba852953f7508e827 (diff) |
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) | |||
191 | /* Start T3_rtx timer if it is not already running and update the heartbeat | 191 | /* Start T3_rtx timer if it is not already running and update the heartbeat |
192 | * timer. This routine is called every time a DATA chunk is sent. | 192 | * timer. This routine is called every time a DATA chunk is sent. |
193 | */ | 193 | */ |
194 | void sctp_transport_reset_timers(struct sctp_transport *transport) | 194 | void sctp_transport_reset_timers(struct sctp_transport *transport, int force) |
195 | { | 195 | { |
196 | /* RFC 2960 6.3.2 Retransmission Timer Rules | 196 | /* RFC 2960 6.3.2 Retransmission Timer Rules |
197 | * | 197 | * |
@@ -201,7 +201,7 @@ void sctp_transport_reset_timers(struct sctp_transport *transport) | |||
201 | * address. | 201 | * address. |
202 | */ | 202 | */ |
203 | 203 | ||
204 | if (!timer_pending(&transport->T3_rtx_timer)) | 204 | if (force || !timer_pending(&transport->T3_rtx_timer)) |
205 | if (!mod_timer(&transport->T3_rtx_timer, | 205 | if (!mod_timer(&transport->T3_rtx_timer, |
206 | jiffies + transport->rto)) | 206 | jiffies + transport->rto)) |
207 | sctp_transport_hold(transport); | 207 | sctp_transport_hold(transport); |