diff options
author | Vlad Yasevich <vladislav.yasevich@hp.com> | 2007-01-30 14:36:14 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2007-01-30 14:36:14 -0800 |
commit | e533ca16f31f9e5abfaf5d8c7dbe7095f01474b6 (patch) | |
tree | ac08e7242f36a9273488325c652629373cf277c2 /net/sctp/sm_sideeffect.c | |
parent | 29556526b970c2e7d4ca808b6082c33981adfdff (diff) | |
download | linux-e533ca16f31f9e5abfaf5d8c7dbe7095f01474b6.tar.bz2 |
[SCTP]: Force update of the rto when processing HB-ACK
When processing a HEARTBEAT-ACK it's possible that the transport rto
timers will not be updated because a prior T3-RTX processing would
have cleared the rto_pending flag on the transport. However, if
we received a valid HEARTBEAT-ACK, we want to force update the
rto variables, so re-set the rto_pending flag before calling
sctp_transport_update_rto().
Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: Sridhar Samudrala <sri@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/sm_sideeffect.c')
-rw-r--r-- | net/sctp/sm_sideeffect.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c index 8bd30976cdee..6db77d1329f7 100644 --- a/net/sctp/sm_sideeffect.c +++ b/net/sctp/sm_sideeffect.c @@ -621,7 +621,13 @@ static void sctp_cmd_transport_on(sctp_cmd_seq_t *cmds, /* The receiver of the HEARTBEAT ACK should also perform an * RTT measurement for that destination transport address * using the time value carried in the HEARTBEAT ACK chunk. + * If the transport's rto_pending variable has been cleared, + * it was most likely due to a retransmit. However, we want + * to re-enable it to properly update the rto. */ + if (t->rto_pending == 0) + t->rto_pending = 1; + hbinfo = (sctp_sender_hb_info_t *) chunk->skb->data; sctp_transport_update_rto(t, (jiffies - hbinfo->sent_at)); |