| From d1c8b7c0840db53de8406c52a7802dff4cdc34b2 Mon Sep 17 00:00:00 2001 |
| From: Vlad Yasevich <vladislav.yasevich@hp.com> |
| Date: Thu, 22 Jan 2009 14:52:43 -0800 |
| Subject: sctp: Correctly start rtx timer on new packet transmissions. |
| |
| From: Vlad Yasevich <vladislav.yasevich@hp.com> |
| |
| [ Upstream commit 6574df9a89f9f7da3a4e5cee7633d430319d3350 ] |
| |
| Commit 62aeaff5ccd96462b7077046357a6d7886175a57 |
| (sctp: Start T3-RTX timer when fast retransmitting lowest TSN) |
| introduced a regression where it was possible to forcibly |
| restart the sctp retransmit timer at the transmission of any |
| new chunk. This resulted in much longer timeout times and |
| sometimes hung sctp connections. |
| |
| Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de> |
| |
| --- |
| net/sctp/outqueue.c | 3 +-- |
| 1 file changed, 1 insertion(+), 2 deletions(-) |
| |
| --- a/net/sctp/outqueue.c |
| +++ b/net/sctp/outqueue.c |
| @@ -929,7 +929,6 @@ static int sctp_outq_flush(struct sctp_o |
| } |
| |
| /* Finally, transmit new packets. */ |
| - start_timer = 0; |
| while ((chunk = sctp_outq_dequeue_data(q)) != NULL) { |
| /* RFC 2960 6.5 Every DATA chunk MUST carry a valid |
| * stream identifier. |
| @@ -1028,7 +1027,7 @@ static int sctp_outq_flush(struct sctp_o |
| list_add_tail(&chunk->transmitted_list, |
| &transport->transmitted); |
| |
| - sctp_transport_reset_timers(transport, start_timer-1); |
| + sctp_transport_reset_timers(transport, 0); |
| |
| q->empty = 0; |
| |