aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp/sm_statefuns.c
diff options
context:
space:
mode:
authorVlad Yasevich <vladislav.yasevich@hp.com>2009-03-02 04:46:14 -0500
committerDavid S. Miller <davem@davemloft.net>2009-03-03 01:49:18 -0500
commit7e99013a5043cacd375375c3efad35b57c3afdba (patch)
tree52b66988e7f49c644731acfa616afe9b4e1501c1 /net/sctp/sm_statefuns.c
parentf61f6f82c90cbaa85270f26b89e3309a8c6e2e88 (diff)
sctp: Fix broken RTO-doubling for data retransmits
Commit faee47cdbfe8d74a1573c2f81ea6dbb08d735be6 (sctp: Fix the RTO-doubling on idle-link heartbeats) broke the RTO doubling for data retransmits. If the heartbeat was sent before the data T3-rtx time, the the RTO will not double upon the T3-rtx expiration. Distingish between the operations by passing an argument to the function. Additionally, Wei Youngjun pointed out that our treatment of requested HEARTBEATS and timer HEARTBEATS is the same wrt resetting congestion window. That needs to be separated, since user requested HEARTBEATS should not treat the link as idle. Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/sm_statefuns.c')
-rw-r--r--net/sctp/sm_statefuns.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/net/sctp/sm_statefuns.c b/net/sctp/sm_statefuns.c
index 3a0cd075914f..a907bab0963d 100644
--- a/net/sctp/sm_statefuns.c
+++ b/net/sctp/sm_statefuns.c
@@ -988,7 +988,9 @@ sctp_disposition_t sctp_sf_sendbeat_8_3(const struct sctp_endpoint *ep,
988 /* Set transport error counter and association error counter 988 /* Set transport error counter and association error counter
989 * when sending heartbeat. 989 * when sending heartbeat.
990 */ 990 */
991 sctp_add_cmd_sf(commands, SCTP_CMD_TRANSPORT_RESET, 991 sctp_add_cmd_sf(commands, SCTP_CMD_TRANSPORT_IDLE,
992 SCTP_TRANSPORT(transport));
993 sctp_add_cmd_sf(commands, SCTP_CMD_TRANSPORT_HB_SENT,
992 SCTP_TRANSPORT(transport)); 994 SCTP_TRANSPORT(transport));
993 } 995 }
994 sctp_add_cmd_sf(commands, SCTP_CMD_HB_TIMER_UPDATE, 996 sctp_add_cmd_sf(commands, SCTP_CMD_HB_TIMER_UPDATE,
@@ -4967,7 +4969,7 @@ sctp_disposition_t sctp_sf_do_prm_requestheartbeat(
4967 * to that address and not acknowledged within one RTO. 4969 * to that address and not acknowledged within one RTO.
4968 * 4970 *
4969 */ 4971 */
4970 sctp_add_cmd_sf(commands, SCTP_CMD_TRANSPORT_RESET, 4972 sctp_add_cmd_sf(commands, SCTP_CMD_TRANSPORT_HB_SENT,
4971 SCTP_TRANSPORT(arg)); 4973 SCTP_TRANSPORT(arg));
4972 return SCTP_DISPOSITION_CONSUME; 4974 return SCTP_DISPOSITION_CONSUME;
4973} 4975}