diff options
author | Vlad Yasevich <vladislav.yasevich@hp.com> | 2010-04-30 22:41:09 -0400 |
---|---|---|
committer | Vlad Yasevich <vladislav.yasevich@hp.com> | 2010-04-30 22:41:09 -0400 |
commit | d9efc2231b28bc199f9de4dd594248b7341188e5 (patch) | |
tree | dd319348c6448a72fb10d1936edde25d8f593e9b /net/sctp/outqueue.c | |
parent | ae19c54866450f6c6f79223ca7d37965859a54e1 (diff) |
sctp: Do not force T3 timer on fast retransmissions.
We don't need to force the T3 timer any more and it's
actually wrong to do as it causes too long of a delay.
The timer will be started if one is not running, but if
one is running, we leave it alone.
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Diffstat (limited to 'net/sctp/outqueue.c')
-rw-r--r-- | net/sctp/outqueue.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/net/sctp/outqueue.c b/net/sctp/outqueue.c index 4e551ba8998c..786c4ff97ae4 100644 --- a/net/sctp/outqueue.c +++ b/net/sctp/outqueue.c | |||
@@ -659,14 +659,6 @@ redo: | |||
659 | if (chunk->fast_retransmit == SCTP_NEED_FRTX) | 659 | if (chunk->fast_retransmit == SCTP_NEED_FRTX) |
660 | chunk->fast_retransmit = SCTP_DONT_FRTX; | 660 | chunk->fast_retransmit = SCTP_DONT_FRTX; |
661 | 661 | ||
662 | /* Force start T3-rtx timer when fast retransmitting | ||
663 | * the earliest outstanding TSN | ||
664 | */ | ||
665 | if (!timer && fast_rtx && | ||
666 | ntohl(chunk->subh.data_hdr->tsn) == | ||
667 | asoc->ctsn_ack_point + 1) | ||
668 | timer = 2; | ||
669 | |||
670 | q->empty = 0; | 662 | q->empty = 0; |
671 | break; | 663 | break; |
672 | } | 664 | } |
@@ -871,7 +863,7 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
871 | * sender MUST assure that at least one T3-rtx | 863 | * sender MUST assure that at least one T3-rtx |
872 | * timer is running. | 864 | * timer is running. |
873 | */ | 865 | */ |
874 | sctp_transport_reset_timers(transport, 0); | 866 | sctp_transport_reset_timers(transport); |
875 | } | 867 | } |
876 | break; | 868 | break; |
877 | 869 | ||
@@ -924,8 +916,7 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
924 | rtx_timeout, &start_timer); | 916 | rtx_timeout, &start_timer); |
925 | 917 | ||
926 | if (start_timer) | 918 | if (start_timer) |
927 | sctp_transport_reset_timers(transport, | 919 | sctp_transport_reset_timers(transport); |
928 | start_timer-1); | ||
929 | 920 | ||
930 | /* This can happen on COOKIE-ECHO resend. Only | 921 | /* This can happen on COOKIE-ECHO resend. Only |
931 | * one chunk can get bundled with a COOKIE-ECHO. | 922 | * one chunk can get bundled with a COOKIE-ECHO. |
@@ -1058,7 +1049,7 @@ static int sctp_outq_flush(struct sctp_outq *q, int rtx_timeout) | |||
1058 | list_add_tail(&chunk->transmitted_list, | 1049 | list_add_tail(&chunk->transmitted_list, |
1059 | &transport->transmitted); | 1050 | &transport->transmitted); |
1060 | 1051 | ||
1061 | sctp_transport_reset_timers(transport, 0); | 1052 | sctp_transport_reset_timers(transport); |
1062 | 1053 | ||
1063 | q->empty = 0; | 1054 | q->empty = 0; |
1064 | 1055 | ||